From b642498a603865d9b6b48e7d507ff63ba7ddb8b1 Mon Sep 17 00:00:00 2001 From: djnitehawk Date: Wed, 12 Mar 2025 15:39:21 +0530 Subject: [PATCH] wip: inverter service --- src/Client/Pages/Index.razor | 15 +- src/Server/Endpoints/GetStatus/Endpoint.cs | 6 +- src/Server/InverterMon.Server.csproj | 5 - src/Server/InverterService/CurrentStatus.cs | 16 +- .../InverterService/FelicityInverter.cs | 325 ++++++++++++++++++ src/Server/InverterService/StatusRetriever.cs | 8 +- .../protocol doc/modbus-protocol.pdf | Bin 0 -> 238844 bytes src/Server/Persistance/Database.cs | 18 +- src/Server/Persistance/PVGen/PVGeneration.cs | 4 +- src/Server/Program.cs | 1 - src/Server/appsettings.Development.json | 8 - src/Server/appsettings.json | 4 +- src/Shared/Models/InverterStatus.cs | 28 +- src/Shared/Models/PVDay.cs | 2 +- 14 files changed, 376 insertions(+), 64 deletions(-) create mode 100644 src/Server/InverterService/FelicityInverter.cs create mode 100644 src/Server/InverterService/protocol doc/modbus-protocol.pdf delete mode 100644 src/Server/appsettings.Development.json diff --git a/src/Client/Pages/Index.razor b/src/Client/Pages/Index.razor index 98abadf..e4ecc56 100644 --- a/src/Client/Pages/Index.razor +++ b/src/Client/Pages/Index.razor @@ -45,7 +45,8 @@
- +
@status?.LoadWatts
@@ -86,7 +87,8 @@
- +
@status?.PVInputWatt
@@ -124,7 +126,8 @@
- +
@@ -196,10 +199,10 @@ onStatusRetrievalError -= NullifyStatus; } - private static decimal RoundToWholeNumber(decimal? val) + private static double RoundToWholeNumber(double? val) => Math.Round(val ?? 0, 0); - private static decimal RoundToOneDecimal(decimal? val) + private static double RoundToOneDecimal(double? val) => Math.Round(val ?? 0, 1); private static string TemperatureCss() @@ -259,7 +262,7 @@ } } - private static decimal GetCRate() + private static double GetCRate() { if (status?.BatteryChargeCRate > 0) return Math.Round(status.BatteryChargeCRate, 2); diff --git a/src/Server/Endpoints/GetStatus/Endpoint.cs b/src/Server/Endpoints/GetStatus/Endpoint.cs index 8c77358..d395650 100644 --- a/src/Server/Endpoints/GetStatus/Endpoint.cs +++ b/src/Server/Endpoints/GetStatus/Endpoint.cs @@ -6,7 +6,7 @@ namespace InverterMon.Server.Endpoints.GetStatus; public class Endpoint : EndpointWithoutRequest { - public CurrentStatus CurrentStatus { get; set; } + public FelicitySolarInverter Inverter { get; set; } public override void Configure() { @@ -34,7 +34,7 @@ public class Endpoint : EndpointWithoutRequest { if (Env.IsDevelopment()) { - var status = CurrentStatus.Result; + var status = new InverterStatus(); status.OutputVoltage = Random.Shared.Next(240); status.LoadWatts = Random.Shared.Next(3500); status.LoadPercentage = Random.Shared.Next(100); @@ -51,7 +51,7 @@ public class Endpoint : EndpointWithoutRequest yield return status; } else - yield return CurrentStatus.Result; + yield return Inverter.Status; await Task.Delay(1000, c); } diff --git a/src/Server/InverterMon.Server.csproj b/src/Server/InverterMon.Server.csproj index b8eca2e..d9d09d1 100644 --- a/src/Server/InverterMon.Server.csproj +++ b/src/Server/InverterMon.Server.csproj @@ -41,12 +41,7 @@ - - - - - \ No newline at end of file diff --git a/src/Server/InverterService/CurrentStatus.cs b/src/Server/InverterService/CurrentStatus.cs index 7909c54..8829d67 100644 --- a/src/Server/InverterService/CurrentStatus.cs +++ b/src/Server/InverterService/CurrentStatus.cs @@ -1,8 +1,8 @@ -using InverterMon.Shared.Models; - -namespace InverterMon.Server.InverterService; - -public class CurrentStatus -{ - public InverterStatus Result { get; set; } -} \ No newline at end of file +// using InverterMon.Shared.Models; +// +// namespace InverterMon.Server.InverterService; +// +// public class CurrentStatus +// { +// public InverterStatus Result { get; set; } +// } \ No newline at end of file diff --git a/src/Server/InverterService/FelicityInverter.cs b/src/Server/InverterService/FelicityInverter.cs new file mode 100644 index 0000000..2a0b9f1 --- /dev/null +++ b/src/Server/InverterService/FelicityInverter.cs @@ -0,0 +1,325 @@ +using System.Buffers; +using System.Diagnostics.CodeAnalysis; +using System.IO.Ports; +using InverterMon.Shared.Models; + +namespace InverterMon.Server.InverterService; + +// sealed class StatusData +// { +// public int WorkingMode { get; set; } +// public int BatteryChargingStage { get; set; } +// public double BatteryVoltage { get; set; } +// public int BatteryCurrent { get; set; } +// public int BatteryPower { get; set; } +// public double AcOutputVoltage { get; set; } +// public int AcOutputActivePower { get; set; } +// public int LoadPercentage { get; set; } +// public double PvInputVoltage { get; set; } +// public int PvInputPower { get; set; } +// } + +sealed class SettingsData +{ + public double BatteryCutOffVoltage { get; set; } + public double BatteryCvChargingVoltage { get; set; } + public double BatteryFloatingChargingVoltage { get; set; } + public double BatteryBackToChargeVoltage { get; set; } + public double BatteryBackToDischargeVoltage { get; set; } + public byte OutputSourcePriority { get; set; } + public byte ChargingSourcePriority { get; set; } + public byte MaxChargingCurrent { get; set; } + public byte MaxAcChargingCurrent { get; set; } +} + +[SuppressMessage("Performance", "CA1822:Mark members as static")] +public sealed class FelicitySolarInverter +{ + public InverterStatus Status { get; private set; } + + const byte SlaveAddress = 0x01; + static SerialPort _serialPort = null!; + + internal void Connect(string portName) + { + lock (_lock) + { + _serialPort = new(portName, 2400, Parity.None, 8, StopBits.One); + _serialPort.Open(); + } + } + + static byte[]? _cachedStatusFrame; + + // The status registers we need are located between 0x1101 and 0x112A. + // Total registers to read = (0x112A - 0x1101 + 1) + const ushort StatusStartAddress = 0x1101; + const ushort StatusRegisterCount = 0x112A - 0x1101 + 1; // 42 registers + + internal void UpdateStatus() + { + var regs = ReadRegisters(StatusStartAddress, StatusRegisterCount); + + // var status = new StatusData + // { + // WorkingMode = regs[0], // 0x1101: Working mode (offset 0) + // BatteryChargingStage = regs[1], // 0x1102: Battery charging stage (offset 1) + // }; + + Status.BatteryVoltage = regs[7] / 100.0; // 0x1108: Battery voltage (offset 0x1108 - 0x1101 = 7) + Status.BatteryDischargeCurrent = regs[8]; // 0x1109: Battery current (offset 8) -- signed value + Status.BatteryChargeCurrent = regs[8]; // 0x1109: Battery current (offset 8) -- signed value + Status.BatteryDischargeWatts = regs[9]; // 0x110A: Battery power (offset 9) -- signed value + Status.BatteryChargeWatts = regs[9]; // 0x110A: Battery power (offset 9) -- signed value + Status.OutputVoltage = regs[16] / 10.0; // 0x1111: AC output voltage (offset 0x1111 - 0x1101 = 16) + Status.LoadWatts = regs[29]; // 0x111E: AC output active power (offset 0x111E - 0x1101 = 29) + Status.LoadPercentage = regs[31]; // 0x1120: Load percentage (offset 0x1120 - 0x1101 = 31) + Status.PVInputVoltage = regs[37] / 10.0; // 0x1126: PV input voltage (offset 0x1126 - 0x1101 = 37) + Status.PVInputWatt = regs[41]; // 0x112A: PV input power (offset 0x112A - 0x1101 = 41) -- signed value + } + + // The settings registers we need are located between 0x211F and 0x2159. + // Total registers to read = (0x2159 - 0x211F + 1) + const ushort SettingsStartAddress = 0x211F; + const ushort SettingsRegisterCount = 0x2159 - 0x211F + 1; // 59 registers + + internal SettingsData ReadSettings() + { + var regs = ReadRegisters(SettingsStartAddress, SettingsRegisterCount); + + var settings = new SettingsData + { + BatteryCutOffVoltage = regs[0] / 10.0, // 0x211F: Battery cut-off voltage (offset 0) + BatteryCvChargingVoltage = regs[3] / 10.0, // 0x2122: Battery C.V charging voltage (offset = 0x2122 - 0x211F = 3) + BatteryFloatingChargingVoltage = regs[4] / 10.0, // 0x2123: Battery floating charging voltage (offset = 4) + OutputSourcePriority = (byte)regs[11], // 0x212A: Output source priority (offset = 0x212A - 0x211F = 11) + ChargingSourcePriority = (byte)regs[13], // 0x212C: Charging source priority (offset = 0x212C - 0x211F = 13) + MaxChargingCurrent = (byte)regs[15], // 0x212E: Max charging current (offset = 15) + MaxAcChargingCurrent = (byte)regs[17], // 0x2130: Max AC charging current (offset = 17) + BatteryBackToChargeVoltage = regs[55] / 10.0, // 0x2156: Battery back to charge voltage (offset = 0x2156 - 0x211F = 55) + BatteryBackToDischargeVoltage = regs[58] / 10.0 // 0x2159: Battery back to discharge voltage (offset = 0x2159 - 0x211F = 58) + }; + + return settings; + } + + internal void SetSetting(Setting setting, float value) + { + ushort registerAddress; + + switch (setting) + { + case Setting.DischargeCutOff: + registerAddress = 0x211F; + value *= 10; // scale volts to register value + + break; + case Setting.BulkVoltage: + registerAddress = 0x2122; + value *= 10; + + break; + case Setting.FloatVoltage: + registerAddress = 0x2123; + value *= 10; + + break; + case Setting.BackToGrid: + registerAddress = 0x2156; + value *= 10; + + break; + case Setting.BackToBattery: + registerAddress = 0x2159; + value *= 10; + + break; + case Setting.OutputPriority: + registerAddress = 0x212A; // No scaling needed for priority values (0,1,2 etc.) + + break; + case Setting.ChargePriority: + registerAddress = 0x212C; + + break; + case Setting.CombinedChargeCurrent: + registerAddress = 0x212E; // Value in amperes (1A per unit) + + break; + case Setting.UtilityChargeCurrent: + registerAddress = 0x2130; + + break; + default: + throw new ArgumentException("Invalid setting!"); + } + + WriteSingleRegister(registerAddress, (ushort)value); + } + + internal void Close() + { + lock (_lock) + { + if (_serialPort.IsOpen) + _serialPort.Close(); + } + } + + static short[] ReadRegisters(ushort startAddress, ushort numberOfPoints) + { + // Build Modbus request frame: + // [Slave Address][Function Code 0x03][Start Address Hi][Start Address Lo][Quantity Hi][Quantity Lo][CRC Lo][CRC Hi] + + byte[] frame; + + var statusRequest = startAddress == StatusStartAddress && numberOfPoints == StatusRegisterCount; + + if (statusRequest && _cachedStatusFrame is not null) + frame = _cachedStatusFrame; + else + { + frame = new byte[8]; + frame[0] = SlaveAddress; + frame[1] = 0x03; + frame[2] = (byte)(startAddress >> 8); + frame[3] = (byte)(startAddress & 0xFF); + frame[4] = (byte)(numberOfPoints >> 8); + frame[5] = (byte)(numberOfPoints & 0xFF); + var crc = CalculateCrc(frame, 6); + frame[6] = (byte)(crc & 0xFF); + frame[7] = (byte)(crc >> 8); + + if (statusRequest) + _cachedStatusFrame = frame; + } + + var response = SendModbusRequest(frame); + + // Expected response structure: + // [Slave Address][Function Code][Byte Count][Data...][CRC Lo][CRC Hi] + + int byteCount = response[2]; + var expectedDataBytes = numberOfPoints * 2; + + if (byteCount != expectedDataBytes) + throw new InvalidDataException("Unexpected byte count in response!"); + + var registers = new short[numberOfPoints]; + for (var i = 0; i < numberOfPoints; i++) + registers[i] = (short)((response[3 + i * 2] << 8) | response[3 + i * 2 + 1]); + + return registers; + } + + static void WriteSingleRegister(ushort registerAddress, ushort value) + { + // Build request frame: + // [Slave Address][Function Code 0x06][Register Address Hi][Register Address Lo] + // [Value Hi][Value Lo][CRC Lo][CRC Hi] + var frame = new byte[8]; + frame[0] = SlaveAddress; + frame[1] = 0x06; + frame[2] = (byte)(registerAddress >> 8); + frame[3] = (byte)(registerAddress & 0xFF); + frame[4] = (byte)(value >> 8); + frame[5] = (byte)(value & 0xFF); + var crc = CalculateCrc(frame, 6); + frame[6] = (byte)(crc & 0xFF); + frame[7] = (byte)(crc >> 8); + + SendModbusRequest(frame); + } + + static readonly object _lock = new(); + + static byte[] SendModbusRequest(byte[] request) + { + lock (_lock) //prevent concurrent access + { + _serialPort.DiscardInBuffer(); + _serialPort.DiscardOutBuffer(); + + var oldTimeout = _serialPort.ReadTimeout; + var buffer = ArrayPool.Shared.Rent(256); + + try + { + _serialPort.ReadTimeout = 1000; + _serialPort.Write(request, 0, request.Length); + + var totalBytesRead = ReadBytes(buffer, 0, 3); // Read fixed header (3 bytes) + + if ((buffer[1] & 0x80) != 0) // Handle Modbus exceptions (function code with high bit set) + totalBytesRead += ReadBytes(buffer, 3, 2); // Error response: read remaining 2 bytes (CRC) + else + { + // Calculate remaining bytes based on function code + var bytesToRead = GetRemainingBytes(buffer[1], buffer[2]); + totalBytesRead += ReadBytes(buffer, 3, bytesToRead); + } + + var response = new byte[totalBytesRead]; + Buffer.BlockCopy(buffer, 0, response, 0, totalBytesRead); + + return response; + } + finally + { + ArrayPool.Shared.Return(buffer); + _serialPort.ReadTimeout = oldTimeout; + } + } + + static int ReadBytes(byte[] b, int offset, int count) + { + var bytesRead = 0; + + while (bytesRead < count) + { + var read = _serialPort.Read(b, offset + bytesRead, count - bytesRead); + + if (read == 0) + throw new TimeoutException("No data received"); + + bytesRead += read; + } + + return bytesRead; + } + + static int GetRemainingBytes(byte functionCode, byte byteCount) + { + return functionCode switch + { + 0x03 => 2 + byteCount, // Read holding registers + 0x06 => 4, // Write single register (fixed 4 bytes) + 0x10 => 4, // Write multiple registers (fixed 4 bytes) + _ => throw new NotSupportedException($"Function code 0x{functionCode:X2} not supported") + }; + } + } + + static ushort CalculateCrc(byte[] data, int length) + { + ushort crc = 0xFFFF; + + for (var pos = 0; pos < length; pos++) + { + crc ^= data[pos]; + + for (var i = 0; i < 8; i++) + { + if ((crc & 0x0001) != 0) + { + crc >>= 1; + crc ^= 0xA001; + } + else + crc >>= 1; + } + } + + return crc; + } +} \ No newline at end of file diff --git a/src/Server/InverterService/StatusRetriever.cs b/src/Server/InverterService/StatusRetriever.cs index 8de9d1c..757fef8 100644 --- a/src/Server/InverterService/StatusRetriever.cs +++ b/src/Server/InverterService/StatusRetriever.cs @@ -3,18 +3,18 @@ using InverterMon.Server.Persistence.Settings; namespace InverterMon.Server.InverterService; -class StatusRetriever(Database db, CurrentStatus currentStatus, UserSettings userSettings) : BackgroundService +class StatusRetriever(Database db, FelicitySolarInverter inverter, UserSettings userSettings) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken c) { while (!c.IsCancellationRequested) { - currentStatus.Result.BatteryCapacity = userSettings.BatteryCapacity; - currentStatus.Result.PV_MaxCapacity = userSettings.PV_MaxCapacity; + inverter.Status.BatteryCapacity = userSettings.BatteryCapacity; + inverter.Status.PV_MaxCapacity = userSettings.PV_MaxCapacity; //todo: get data from inverter and map to CurrentStatus.Result - _ = db.UpdateTodaysPvGeneration(currentStatus, c); + db.UpdateTodaysPvGeneration(c); await Task.Delay(2000); } diff --git a/src/Server/InverterService/protocol doc/modbus-protocol.pdf b/src/Server/InverterService/protocol doc/modbus-protocol.pdf new file mode 100644 index 0000000000000000000000000000000000000000..84450545881efe6422da5bd2c382c036c7099d04 GIT binary patch literal 238844 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

a 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 _pvGenCollection; readonly ILiteCollection _usrSettingsCollection; PVGeneration? _today; - public Database(IHostApplicationLifetime lifetime, CurrentStatus status, UserSettings settings) + public Database(IHostApplicationLifetime lifetime, FelicitySolarInverter inverter, UserSettings settings) { - _currentStatus = status; + _inverter = inverter; _settings = settings; _db = new("InverterMon.db") { CheckpointSize = 0 }; lifetime.ApplicationStopping.Register(() => _db?.Dispose()); @@ -36,18 +36,18 @@ public class Database .SingleOrDefault(); if (_today is not null) - _currentStatus.Result.RestorePVWattHours(_today.TotalWattHours); + _inverter.Status.RestorePVWattHours(_today.TotalWattHours); else { _today = new() { Id = todayDayNumber }; _today.SetTotalWattHours(0); - _currentStatus.Result.RestorePVWattHours(0); + _inverter.Status.RestorePVWattHours(0); _pvGenCollection.Insert(_today); _db.Checkpoint(); } } - public async Task UpdateTodaysPvGeneration(CurrentStatus cmd, CancellationToken c) + public void UpdateTodaysPvGeneration(CancellationToken c) { var hourNow = DateTime.Now.Hour; @@ -58,13 +58,13 @@ public class Database if (_today?.Id == todayDayNumber) { - _today.SetWattPeaks(cmd.Result.PVInputWatt); - _today.SetTotalWattHours(cmd.Result.PVInputWattHour); + _today.SetWattPeaks(_inverter.Status.PVInputWatt); + _today.SetTotalWattHours(_inverter.Status.PVInputWattHour); _pvGenCollection.Update(_today); } else { - cmd.Result.ResetPVWattHourAccumulation(); //it's a new day. start accumulation from scratch. + _inverter.Status.ResetPVWattHourAccumulation(); //it's a new day. start accumulation from scratch. _today = new() { Id = todayDayNumber }; _today.SetTotalWattHours(0); _pvGenCollection.Insert(_today); diff --git a/src/Server/Persistance/PVGen/PVGeneration.cs b/src/Server/Persistance/PVGen/PVGeneration.cs index dfaf137..c857c1e 100644 --- a/src/Server/Persistance/PVGen/PVGeneration.cs +++ b/src/Server/Persistance/PVGen/PVGeneration.cs @@ -4,7 +4,7 @@ public class PVGeneration { public int Id { get; set; } public Dictionary WattPeaks { get; set; } = new(); - public decimal TotalWattHours { get; set; } + public double TotalWattHours { get; set; } public void SetWattPeaks(int newValue) { @@ -19,7 +19,7 @@ public class PVGeneration WattPeaks[key] = newValue; } - public void SetTotalWattHours(decimal totalWattHours) + public void SetTotalWattHours(double totalWattHours) { TotalWattHours = totalWattHours; } diff --git a/src/Server/Program.cs b/src/Server/Program.cs index d000ab0..516ca48 100644 --- a/src/Server/Program.cs +++ b/src/Server/Program.cs @@ -18,7 +18,6 @@ _ = int.TryParse(bld.Configuration["LaunchSettings:WebPort"] ?? "80", out var po bld.WebHost.ConfigureKestrel(o => o.Listen(IPAddress.Any, port)); bld.Services - .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton(); diff --git a/src/Server/appsettings.Development.json b/src/Server/appsettings.Development.json deleted file mode 100644 index 0c208ae..0000000 --- a/src/Server/appsettings.Development.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} diff --git a/src/Server/appsettings.json b/src/Server/appsettings.json index 9dec519..3e4674a 100644 --- a/src/Server/appsettings.json +++ b/src/Server/appsettings.json @@ -2,9 +2,7 @@ "LaunchSettings": { "DeviceAddress": "/dev/ttyUSB1", "JkBmsAddress": "/dev/ttyUSB0", - "WebPort": 80, - "TroubleMode": "no", - "MppSolarPath": "/usr/local/bin/mpp-solar" + "WebPort": 80 }, "Logging": { "LogLevel": { diff --git a/src/Shared/Models/InverterStatus.cs b/src/Shared/Models/InverterStatus.cs index 74c3bbc..d35b429 100644 --- a/src/Shared/Models/InverterStatus.cs +++ b/src/Shared/Models/InverterStatus.cs @@ -8,16 +8,16 @@ public class InverterStatus public int BatteryCapacity { get; set; } = 100; [JsonPropertyName("b")] - public decimal BatteryChargeCRate => BatteryChargeCurrent == 0 ? 0 : Convert.ToDecimal(BatteryChargeCurrent) / BatteryCapacity; + public double BatteryChargeCRate => BatteryChargeCurrent == 0 ? 0 : Convert.ToDouble(BatteryChargeCurrent) / BatteryCapacity; [JsonPropertyName("c")] public int BatteryChargeCurrent { get; set; } [JsonPropertyName("d")] - public int BatteryChargeWatts => BatteryChargeCurrent == 0 ? 0 : Convert.ToInt32(BatteryChargeCurrent * BatteryVoltage); + public int BatteryChargeWatts { get; set; } [JsonPropertyName("e")] - public decimal BatteryDischargeCRate => BatteryDischargeCurrent == 0 ? 0 : Convert.ToDecimal(BatteryDischargeCurrent) / BatteryCapacity; + public double BatteryDischargeCRate => BatteryDischargeCurrent == 0 ? 0 : Convert.ToDouble(BatteryDischargeCurrent) / BatteryCapacity; [JsonPropertyName("f")] public int BatteryDischargeCurrent { get; set; } @@ -26,37 +26,37 @@ public class InverterStatus public int BatteryDischargePotential => BatteryDischargeCurrent > 0 ? Convert.ToInt32(Convert.ToDouble(BatteryDischargeCurrent) / BatteryCapacity * 100) : 0; [JsonPropertyName("h")] - public int BatteryDischargeWatts => BatteryDischargeCurrent == 0 ? 0 : Convert.ToInt32(BatteryDischargeCurrent * BatteryVoltage); + public int BatteryDischargeWatts { get; set; } [JsonPropertyName("i")] - public decimal BatteryVoltage { get; set; } + public double BatteryVoltage { get; set; } [JsonPropertyName("j")] public int GridUsageWatts => GridVoltage < 10 ? 0 : LoadWatts + BatteryChargeWatts - (PVInputWatt + BatteryDischargeWatts); [JsonPropertyName("k")] - public decimal GridVoltage { get; set; } + public double GridVoltage { get; set; } [JsonPropertyName("l")] public int HeatSinkTemperature { get; set; } [JsonPropertyName("m")] - public decimal LoadCurrent => LoadWatts == 0 ? 0 : LoadWatts / OutputVoltage; + public double LoadCurrent => LoadWatts == 0 ? 0 : LoadWatts / OutputVoltage; [JsonPropertyName("n")] - public decimal LoadPercentage { get; set; } + public int LoadPercentage { get; set; } [JsonPropertyName("o")] public int LoadWatts { get; set; } [JsonPropertyName("p")] - public decimal OutputVoltage { get; set; } + public double OutputVoltage { get; set; } [JsonPropertyName("q")] - public decimal PVInputCurrent { get; set; } + public double PVInputCurrent { get; set; } [JsonPropertyName("r")] - public decimal PVInputVoltage { get; set; } + public double PVInputVoltage { get; set; } [JsonPropertyName("s")] public int PVInputWatt @@ -69,13 +69,13 @@ public class InverterStatus pvInputWatt = value; var interval = (DateTime.Now - pvInputWattHourLastComputed).TotalSeconds; - PVInputWattHour += value / (3600 / Convert.ToDecimal(interval)); + PVInputWattHour += value / (3600 / Convert.ToDouble(interval)); pvInputWattHourLastComputed = DateTime.Now; } } [JsonPropertyName("t")] - public decimal PVInputWattHour { get; private set; } + public double PVInputWattHour { get; private set; } [JsonPropertyName("u")] public int PV_MaxCapacity { get; set; } @@ -86,7 +86,7 @@ public class InverterStatus int pvInputWatt; DateTime pvInputWattHourLastComputed; - public void RestorePVWattHours(decimal accruedWattHours) + public void RestorePVWattHours(double accruedWattHours) { PVInputWattHour = accruedWattHours; pvInputWattHourLastComputed = DateTime.Now; diff --git a/src/Shared/Models/PVDay.cs b/src/Shared/Models/PVDay.cs index b901192..8fe04b2 100644 --- a/src/Shared/Models/PVDay.cs +++ b/src/Shared/Models/PVDay.cs @@ -6,7 +6,7 @@ public class PVDay { public int DayNumber { get; set; } public string DayName { get; set; } - public decimal TotalKiloWattHours { get; set; } + public double TotalKiloWattHours { get; set; } public IEnumerable WattPeaks { get; set; } public int GraphTickCount { get; set; } public int[] GraphRange { get; set; }