Fixed bug in status update in Backend, update controller to support remote configuration for SodistoreHome installations
This commit is contained in:
parent
4420f7373b
commit
3795287124
|
|
@ -8,10 +8,21 @@ public class Configuration
|
|||
public DateTime CalibrationChargeDate { get; set; }
|
||||
public CalibrationChargeType CalibrationDischargeState { get; set; }
|
||||
public DateTime CalibrationDischargeDate { get; set; }
|
||||
|
||||
//For sodistoreHome installations
|
||||
|
||||
public Double MaximumDischargingCurrent { get; set; }
|
||||
public Double MaximumChargingCurrent { get; set; }
|
||||
public Double OperatingPriority { get; set; }
|
||||
public Double BatteriesCount { get; set; }
|
||||
|
||||
public String GetConfigurationString()
|
||||
{
|
||||
return $"MinimumSoC: {MinimumSoC}, GridSetPoint: {GridSetPoint}, CalibrationChargeState: {CalibrationChargeState}, CalibrationChargeDate: {CalibrationChargeDate}, " +
|
||||
$"CalibrationDischargeState: {CalibrationDischargeState}, CalibrationDischargeDate: {CalibrationDischargeDate}";
|
||||
$"CalibrationDischargeState: {CalibrationDischargeState}, CalibrationDischargeDate: {CalibrationDischargeDate}" +
|
||||
$"MaximumDischargingCurrent: {MaximumDischargingCurrent}, MaximumChargingCurrent: {MaximumChargingCurrent}, OperatingPriority: {OperatingPriority}" +
|
||||
$"BatteriesCount: {BatteriesCount}";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -381,25 +381,6 @@ public static class ExoCmd
|
|||
public static async Task<Boolean> SendConfig(this Installation installation, Configuration config)
|
||||
{
|
||||
|
||||
// This looks hacky but here we grab the vpn-Ip of the installation by its installation Name (e.g. Salimax0001)
|
||||
// From the vpn server (here salidomo, but we use the vpn home ip for future-proofing)
|
||||
// using var client = new HttpClient();
|
||||
// var webRequest = client.GetAsync("10.2.0.1/vpnstatus.txt");
|
||||
// var text = webRequest.ToString();
|
||||
// var lines = text!.Split(new [] { Environment.NewLine }, StringSplitOptions.None);
|
||||
// var vpnIp = lines.First(l => l.Contains(installation.InstallationName)).Split(",")[1];
|
||||
//
|
||||
// // Writing the config to a file and then sending that file with rsync sounds inefficient
|
||||
// // We should find a better solution...
|
||||
// // TODO The VPN server should do this not the backend!!!
|
||||
// await File.WriteAllTextAsync("./config.json", config);
|
||||
// var result = await Cli.Wrap("rsync")
|
||||
// .WithArguments("./config.json")
|
||||
// .AppendArgument($@"root@{vpnIp}:/salimax")
|
||||
// .ExecuteAsync();
|
||||
|
||||
// return result.ExitCode == 200;
|
||||
|
||||
var maxRetransmissions = 4;
|
||||
UdpClient udpClient = new UdpClient();
|
||||
udpClient.Client.ReceiveTimeout = 2000;
|
||||
|
|
@ -415,8 +396,8 @@ public static class ExoCmd
|
|||
|
||||
Console.WriteLine(config.GetConfigurationString());
|
||||
|
||||
//Console.WriteLine($"Sent UDP message to {installation.VpnIp}:{port}: {config}");
|
||||
Console.WriteLine($"Sent UDP message to {installation.VpnIp}:{port}"+" GridSetPoint is "+config.GridSetPoint +" and MinimumSoC is "+config.MinimumSoC);
|
||||
Console.WriteLine($"Sent UDP message to {installation.VpnIp}:{port}: {config}");
|
||||
//Console.WriteLine($"Sent UDP message to {installation.VpnIp}:{port}"+" GridSetPoint is "+config.GridSetPoint +" and MinimumSoC is "+config.MinimumSoC);
|
||||
|
||||
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse(installation.VpnIp), port);
|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ public static class Program
|
|||
|
||||
private static OpenApiInfo OpenApiInfo { get; } = new OpenApiInfo
|
||||
{
|
||||
Title = "Innesco Backend API",
|
||||
Title = "Inesco Backend API",
|
||||
Version = "v1"
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -148,6 +148,8 @@ public static class RabbitMqManager
|
|||
|
||||
Int32 prevStatus;
|
||||
|
||||
|
||||
|
||||
//This installation id does not exist in our in-memory data structure, add it.
|
||||
if (!WebsocketManager.InstallationConnections.ContainsKey(installationId))
|
||||
{
|
||||
|
|
@ -167,6 +169,11 @@ public static class RabbitMqManager
|
|||
WebsocketManager.InstallationConnections[installationId].Timestamp = DateTime.Now;
|
||||
}
|
||||
|
||||
if (installationId == 795)
|
||||
{
|
||||
Console.WriteLine("RECEIVED A HEARTBIT FROM prototype, time is "+ WebsocketManager.InstallationConnections[installationId].Timestamp);
|
||||
}
|
||||
|
||||
installation.Status = receivedStatusMessage.Status;
|
||||
installation.Apply(Db.Update);
|
||||
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ public static class WebsocketManager
|
|||
Console.WriteLine("Monitoring installation table...");
|
||||
foreach (var installationConnection in InstallationConnections)
|
||||
{
|
||||
Console.WriteLine("installationConnection ID is " + installationConnection.Key + "latest timestamp is" +installationConnection.Value.Timestamp + "product is "+ installationConnection.Value.Product
|
||||
+ "and time diff is "+ (DateTime.Now - installationConnection.Value.Timestamp));
|
||||
Console.WriteLine("installationConnection ID is " + installationConnection.Key + ", latest timestamp is" +installationConnection.Value.Timestamp + ", product is "+ installationConnection.Value.Product
|
||||
+ ", and time diff is "+ (DateTime.Now - installationConnection.Value.Timestamp));
|
||||
|
||||
if ((installationConnection.Value.Product == (int)ProductType.Salimax && (DateTime.Now - installationConnection.Value.Timestamp) > TimeSpan.FromMinutes(2)) ||
|
||||
(installationConnection.Value.Product == (int)ProductType.Salidomo && (DateTime.Now - installationConnection.Value.Timestamp) > TimeSpan.FromMinutes(60)) ||
|
||||
(installationConnection.Value.Product == (int)ProductType.SodioHome && (DateTime.Now - installationConnection.Value.Timestamp) > TimeSpan.FromMinutes(2)) ||
|
||||
(installationConnection.Value.Product == (int)ProductType.SodioHome && (DateTime.Now - installationConnection.Value.Timestamp) > TimeSpan.FromMinutes(4)) ||
|
||||
(installationConnection.Value.Product == (int)ProductType.SodiStoreMax && (DateTime.Now - installationConnection.Value.Timestamp) > TimeSpan.FromMinutes(2))
|
||||
)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue