Update main function for growatt

This commit is contained in:
atef 2026-02-13 10:02:15 +01:00
parent 15ef53903f
commit 27d671d2f4
1 changed files with 20 additions and 22 deletions

View File

@ -32,13 +32,13 @@ namespace InnovEnergy.App.GrowattCommunication;
public static class Program public static class Program
{ {
private static readonly TimeSpan UpdateInterval = TimeSpan.FromSeconds(5); private static readonly TimeSpan UpdateInterval = TimeSpan.FromSeconds(6);
private const UInt16 NbrOfFileToConcatenate = 15; // add this to config file private const UInt16 NbrOfFileToConcatenate = 15; // add this to config file
private static UInt16 _fileCounter = 0; private static UInt16 _fileCounter = 0;
// //
private static Channel _growattChannel; private static Channel _growattChannel;
private const String SwVersionNumber =" V1.00.310725 beta"; private static readonly String SwVersionNumber = " V1.00." + DateTime.Today;
private const String VpnServerIp = "10.2.0.11"; private const String VpnServerIp = "10.2.0.11";
private static Boolean _subscribedToQueue = false; private static Boolean _subscribedToQueue = false;
private static Boolean _subscribeToQueueForTheFirstTime = false; private static Boolean _subscribeToQueueForTheFirstTime = false;
@ -142,14 +142,14 @@ public static class Program
statusrecord.InverterRecord.EnableEmsCommunicationFailureTime.WriteLine(" = EnableEmsCommunicationFailureTime"); statusrecord.InverterRecord.EnableEmsCommunicationFailureTime.WriteLine(" = EnableEmsCommunicationFailureTime");
statusrecord.InverterRecord.EnableCommand.WriteLine(" = EnableCommand"); statusrecord.InverterRecord.EnableCommand.WriteLine(" = EnableCommand");
statusrecord.InverterRecord.ControlPermession.WriteLine(" = ControlPermession"); statusrecord.InverterRecord.ControlPermission.WriteLine(" = ControlPermession");
statusrecord.InverterRecord.GridPower.WriteLine(" MeterPower"); statusrecord.InverterRecord.GridPower.WriteLine(" MeterPower");
statusrecord.InverterRecord.ConsumptionPower.WriteLine(" ConsumptionPower"); statusrecord.InverterRecord.ConsumptionPower.WriteLine(" ConsumptionPower");
statusrecord.InverterRecord.ExportedPowerToGridMeter.WriteLine(" ExportedPowerToGrid"); statusrecord.InverterRecord.ExportedPowerToGridMeter.WriteLine(" ExportedPowerToGrid");
statusrecord.InverterRecord.ImportedPowerFromGrid.WriteLine(" ImportedPowerFromGrid"); statusrecord.InverterRecord.ImportedPowerFromGrid.WriteLine(" ImportedPowerFromGrid");
statusrecord.InverterRecord.InverterActivePower.WriteLine(" InverterActivePower"); statusrecord.InverterRecord.InverterActivePower.WriteLine(" InverterActivePower");
statusrecord.InverterRecord.MaxSoc.WriteLine(" BatteryChargeCutoffVoltage "); //30409 we set power here statusrecord.InverterRecord.MaxSoc.WriteLine(" MaxSoc "); //30409 we set power here
statusrecord.InverterRecord.MinSoc.WriteLine(" BatteryDishargeCutoffVoltage "); //30409 we set power here statusrecord.InverterRecord.MinSoc.WriteLine(" MinSoc "); //30409 we set power here
statusrecord.InverterRecord.PowerFactor.WriteLine(" = PowerFactor"); statusrecord.InverterRecord.PowerFactor.WriteLine(" = PowerFactor");
statusrecord.InverterRecord.Battery1Soc.WriteLine(" SOC"); statusrecord.InverterRecord.Battery1Soc.WriteLine(" SOC");
statusrecord.InverterRecord.Battery1Power.WriteLine(" Battery Power"); statusrecord.InverterRecord.Battery1Power.WriteLine(" Battery Power");
@ -157,7 +157,6 @@ public static class Program
statusrecord.InverterRecord.Battery1Voltage.WriteLine(" Battery Voltage"); statusrecord.InverterRecord.Battery1Voltage.WriteLine(" Battery Voltage");
statusrecord.InverterRecord.BatteryMaxChargingCurrent.WriteLine(" BatteryMaxChargeCurrent "); //30409 we set power here statusrecord.InverterRecord.BatteryMaxChargingCurrent.WriteLine(" BatteryMaxChargeCurrent "); //30409 we set power here
statusrecord.InverterRecord.BatteryMaxDischargingCurrent.WriteLine(" BatteryMaxDischargeCurrent "); //30409 we set power here statusrecord.InverterRecord.BatteryMaxDischargingCurrent.WriteLine(" BatteryMaxDischargeCurrent "); //30409 we set power here
statusrecord.InverterRecord.MinSoc.WriteLine(" MinSoc "); //30409 we set power here
statusrecord.InverterRecord.ChargeCutoffSocVoltage.WriteLine(" ChargeCutoffSoc "); //30409 we set power here statusrecord.InverterRecord.ChargeCutoffSocVoltage.WriteLine(" ChargeCutoffSoc "); //30409 we set power here
statusrecord.InverterRecord.PvPower.WriteLine(" Pv Power "); //30409 we set power here statusrecord.InverterRecord.PvPower.WriteLine(" Pv Power "); //30409 we set power here
@ -206,6 +205,7 @@ public static class Program
status.Config.MaximumDischargingCurrent = config.MaximumDischargingCurrent; status.Config.MaximumDischargingCurrent = config.MaximumDischargingCurrent;
status.Config.OperatingPriority = config.OperatingPriority; status.Config.OperatingPriority = config.OperatingPriority;
status.Config.BatteriesCount = config.BatteriesCount; status.Config.BatteriesCount = config.BatteriesCount;
status.Config.ControlPermission = config.ControlPermission;
} }
private static String EssModeControl(StatusRecord? statusrecord) private static String EssModeControl(StatusRecord? statusrecord)
@ -247,11 +247,10 @@ public static class Program
var alarmList = new List<AlarmOrWarning>(); var alarmList = new List<AlarmOrWarning>();
var warningList = new List<AlarmOrWarning>(); var warningList = new List<AlarmOrWarning>();
if (record.InverterRecord.SystemOperatingMode == GrowattSystemStatus.Fault)
{ if (record.InverterRecord.WarningMainCode != 0)
if (record.InverterRecord.FaultMainCode != 0)
{ {
alarmList.Add(new AlarmOrWarning warningList.Add(new AlarmOrWarning
{ {
Date = DateTime.Now.ToString("yyyy-MM-dd"), Date = DateTime.Now.ToString("yyyy-MM-dd"),
Time = DateTime.Now.ToString("HH:mm:ss"), Time = DateTime.Now.ToString("HH:mm:ss"),
@ -260,9 +259,9 @@ public static class Program
}); });
} }
if (record.InverterRecord.WarningMainCode != 0) if (record.InverterRecord.FaultMainCode != 0)
{ {
warningList.Add(new AlarmOrWarning alarmList.Add(new AlarmOrWarning
{ {
Date = DateTime.Now.ToString("yyyy-MM-dd"), Date = DateTime.Now.ToString("yyyy-MM-dd"),
Time = DateTime.Now.ToString("HH:mm:ss"), Time = DateTime.Now.ToString("HH:mm:ss"),
@ -270,7 +269,7 @@ public static class Program
Description = record.InverterRecord.FaultMainCode.ToString(), //to add the sub code Description = record.InverterRecord.FaultMainCode.ToString(), //to add the sub code
}); });
} }
}
_sodiohomeAlarmState = warningList.Any() _sodiohomeAlarmState = warningList.Any()
? SodistoreAlarmState.Orange ? SodistoreAlarmState.Orange
@ -376,7 +375,7 @@ public static class Program
_lastHeartbeatTime = DateTime.Now; _lastHeartbeatTime = DateTime.Now;
} }
if (s3Bucket != null) if (s3Bucket != null) // why this is based on s3 bucket?
{ {
RabbitMqManager.InformMiddleware(currentSalimaxState); RabbitMqManager.InformMiddleware(currentSalimaxState);
} }
@ -401,9 +400,8 @@ public static class Program
st.InverterRecord.EmsCommunicationFailureTime = 20; // 20 sec st.InverterRecord.EmsCommunicationFailureTime = 20; // 20 sec
st.InverterRecord.EnableEmsCommunicationFailureTime = false; st.InverterRecord.EnableEmsCommunicationFailureTime = false;
st.InverterRecord.EnableCommand = true; st.InverterRecord.EnableCommand = true;
st.InverterRecord.ControlPermession = true; st.InverterRecord.ControlPermission = st.Config.ControlPermission;;
st.InverterRecord.MaxSoc = 60; //st.Config.BatteryChargeCutoffVoltage; st.InverterRecord.MaxSoc = 100; //st.Config.MaxSoc;
st.InverterRecord.MinSoc = 25; //st.Config.BatteryDischargeCutoffVoltage;
} }
private static Dictionary<String, UInt16> ConvertToModbusRegisters(Object value, String outputType, private static Dictionary<String, UInt16> ConvertToModbusRegisters(Object value, String outputType,
@ -645,7 +643,7 @@ public static class Program
Console.WriteLine(error); Console.WriteLine(error);
await SaveToLocalCompressedFallback(compressedBytes, fileNameWithoutExtension); await SaveToLocalCompressedFallback(compressedBytes, fileNameWithoutExtension);
Heartbit(); // Heartbit();
return false; return false;
} }
@ -654,7 +652,7 @@ public static class Program
Console.WriteLine( Console.WriteLine(
"---------------------------------------- Resending FailedUploadedFiles----------------------------------------"); "---------------------------------------- Resending FailedUploadedFiles----------------------------------------");
Heartbit(); //Heartbit();
await ResendLocalFailedFilesAsync(s3Config); // retry any pending failed files await ResendLocalFailedFilesAsync(s3Config); // retry any pending failed files
} }
@ -667,7 +665,7 @@ public static class Program
await SaveToLocalCompressedFallback(compressedBytes, fileNameWithoutExtension); await SaveToLocalCompressedFallback(compressedBytes, fileNameWithoutExtension);
} }
Heartbit(); //Heartbit();
return false; return false;
} }
} }
@ -676,7 +674,7 @@ public static class Program
return true; return true;
} }
private static void Heartbit() /* private static void Heartbit()
{ {
var s3Bucket = Config.Load().S3?.Bucket; var s3Bucket = Config.Load().S3?.Bucket;
var tryParse = int.TryParse(s3Bucket?.Split("-")[0], out var installationId); var tryParse = int.TryParse(s3Bucket?.Split("-")[0], out var installationId);
@ -693,7 +691,7 @@ public static class Program
if (s3Bucket != null) if (s3Bucket != null)
RabbitMqManager.InformMiddleware(returnedStatus); RabbitMqManager.InformMiddleware(returnedStatus);
} }
} }*/
private static async Task SaveToLocalCompressedFallback(Byte[] compressedData, String fileNameWithoutExtension) private static async Task SaveToLocalCompressedFallback(Byte[] compressedData, String fileNameWithoutExtension)
{ {