diff --git a/csharp/App/Backend/Backend.csproj b/csharp/App/Backend/Backend.csproj
index 0078c9897..518c98e37 100644
--- a/csharp/App/Backend/Backend.csproj
+++ b/csharp/App/Backend/Backend.csproj
@@ -226,6 +226,12 @@
+
+
+
+
+
+
diff --git a/csharp/App/Backend/Controller.cs b/csharp/App/Backend/Controller.cs
index add1e5f17..c4be8820c 100644
--- a/csharp/App/Backend/Controller.cs
+++ b/csharp/App/Backend/Controller.cs
@@ -177,70 +177,76 @@ public class Controller : ControllerBase
string commonPrefix = FindCommonPrefix(start.ToString(), end.ToString());
- string bucketPath = "s3://"+installation.S3BucketId + "-3e5b3069-214a-43ee-8d85-57d72000c19d/"+commonPrefix;
- string configPath = "/home/ubuntu/.s3cfg";
+ Int64 startTimestamp = Int64.Parse(start.ToString().Substring(0,5));
+ Int64 endTimestamp = Int64.Parse(end.ToString().Substring(0,5));
- try
+ string configPath = "/home/ubuntu/.s3cfg";
+
+ while (startTimestamp <= endTimestamp)
{
- // Set up process start info
- ProcessStartInfo startInfo = new ProcessStartInfo
+ string bucketPath = "s3://"+installation.S3BucketId + "-3e5b3069-214a-43ee-8d85-57d72000c19d/"+startTimestamp;
+ Console.WriteLine("Fetching data for "+startTimestamp);
+
+ try
{
- FileName = "s3cmd",
- Arguments = $"--config {configPath} ls {bucketPath}",
- RedirectStandardOutput = true,
- RedirectStandardError = true,
- UseShellExecute = false,
- CreateNoWindow = true
- };
-
- // Start the process
- Process process = new Process
- {
- StartInfo = startInfo
- };
-
- process.Start();
-
- // Read the output
- string output = process.StandardOutput.ReadToEnd();
- string error = process.StandardError.ReadToEnd();
-
- process.WaitForExit();
-
- // Check for errors
- if (process.ExitCode != 0)
- {
- Console.WriteLine("Error executing command:");
- Console.WriteLine(error);
- }
- else
- {
- Console.WriteLine("Command output:");
- //Console.WriteLine(output);
- // Define a regex pattern to match the filenames without .csv extension
- var pattern = @"/([^/]+)\.csv$";
- var regex = new Regex(pattern);
-
- // Process each line of the output
- foreach (var line in output.Split('\n'))
+ // Set up process start info
+ ProcessStartInfo startInfo = new ProcessStartInfo
{
- var match = regex.Match(line);
- if (match.Success && long.Parse(match.Groups[1].Value)>=start && long.Parse(match.Groups[1].Value)<=end)
- {
- allTimestamps.Add(long.Parse(match.Groups[1].Value));
- //Console.WriteLine(match.Groups[1].Value);
- }
+ FileName = "s3cmd",
+ Arguments = $"--config {configPath} ls {bucketPath}",
+ RedirectStandardOutput = true,
+ RedirectStandardError = true,
+ UseShellExecute = false,
+ CreateNoWindow = true
+ };
+
+ // Start the process
+ Process process = new Process
+ {
+ StartInfo = startInfo
+ };
+
+ process.Start();
+
+ // Read the output
+ string output = process.StandardOutput.ReadToEnd();
+ string error = process.StandardError.ReadToEnd();
+
+ process.WaitForExit();
+
+ // Check for errors
+ if (process.ExitCode != 0)
+ {
+ Console.WriteLine("Error executing command:");
+ Console.WriteLine(error);
}
+ else
+ {
+ // Define a regex pattern to match the filenames without .csv extension
+ var pattern = @"/([^/]+)\.csv$";
+ var regex = new Regex(pattern);
+ // Process each line of the output
+ foreach (var line in output.Split('\n'))
+ {
+ var match = regex.Match(line);
+ if (match.Success && long.Parse(match.Groups[1].Value) >= start && long.Parse(match.Groups[1].Value) <= end)
+ {
+ allTimestamps.Add(long.Parse(match.Groups[1].Value));
+ //Console.WriteLine(match.Groups[1].Value);
+ }
+ }
+
+ }
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine($"Exception: {e.Message}");
}
- }
- catch (Exception e)
- {
- Console.WriteLine($"Exception: {e.Message}");
- }
-
-
+ startTimestamp++;
+ }
+
int totalRecords = allTimestamps.Count;
if (totalRecords <= sampleSize)
{
@@ -249,8 +255,6 @@ public class Controller : ControllerBase
Console.WriteLine("SampledTimestamps = " + allTimestamps.Count);
return allTimestamps;
}
-
-
int interval = totalRecords / sampleSize;
var sampledTimestamps = new List();
diff --git a/csharp/App/Backend/Database/Create.cs b/csharp/App/Backend/Database/Create.cs
index eadafd3dd..f697a8931 100644
--- a/csharp/App/Backend/Database/Create.cs
+++ b/csharp/App/Backend/Database/Create.cs
@@ -26,7 +26,7 @@ public static partial class Db
public static Boolean Create(Installation installation)
{
- installation.S3BucketId = Installations.Count(f => f.Product == installation.Product)+1;
+ installation.S3BucketId = Installations.Where(inst => inst.Product == installation.Product).Max(inst => (int?)inst.S3BucketId)+1 ?? 0;
// SQLite wrapper is smart and *modifies* t's Id to the one generated (autoincrement) by the insertion
return Insert(installation);
diff --git a/csharp/App/SaliMax/src/MiddlewareClasses/MiddlewareAgent.cs b/csharp/App/SaliMax/src/MiddlewareClasses/MiddlewareAgent.cs
index 32950ff50..51688b92a 100644
--- a/csharp/App/SaliMax/src/MiddlewareClasses/MiddlewareAgent.cs
+++ b/csharp/App/SaliMax/src/MiddlewareClasses/MiddlewareAgent.cs
@@ -9,7 +9,7 @@ namespace InnovEnergy.App.SaliMax.MiddlewareClasses;
public static class MiddlewareAgent
{
- private static UdpClient _udpListener = null!;
+ public static UdpClient UdpListener = null!;
private static IPAddress? _controllerIpAddress;
private static EndPoint? _endPoint;
@@ -24,9 +24,9 @@ public static class MiddlewareAgent
const Int32 udpPort = 9000;
_endPoint = new IPEndPoint(_controllerIpAddress, udpPort);
- _udpListener = new UdpClient();
- _udpListener.Client.Blocking = false;
- _udpListener.Client.Bind(_endPoint);
+ UdpListener = new UdpClient();
+ UdpListener.Client.Blocking = false;
+ UdpListener.Client.Bind(_endPoint);
}
private static IPAddress FindVpnIp()
@@ -53,7 +53,7 @@ public static class MiddlewareAgent
public static Configuration? SetConfigurationFile()
{
- if (_udpListener.Available > 0)
+ if (UdpListener.Available > 0)
{
IPEndPoint? serverEndpoint = null;
@@ -61,7 +61,7 @@ public static class MiddlewareAgent
var replyMessage = "ACK";
var replyData = Encoding.UTF8.GetBytes(replyMessage);
- var udpMessage = _udpListener.Receive(ref serverEndpoint);
+ var udpMessage = UdpListener.Receive(ref serverEndpoint);
var message = Encoding.UTF8.GetString(udpMessage);
var config = JsonSerializer.Deserialize(message);
@@ -74,13 +74,13 @@ public static class MiddlewareAgent
config.CalibrationChargeDate);
// Send the reply to the sender's endpoint
- _udpListener.Send(replyData, replyData.Length, serverEndpoint);
+ UdpListener.Send(replyData, replyData.Length, serverEndpoint);
Console.WriteLine($"Replied to {serverEndpoint}: {replyMessage}");
return config;
}
}
- if (_endPoint != null && !_endPoint.Equals(_udpListener.Client.LocalEndPoint as IPEndPoint))
+ if (_endPoint != null && !_endPoint.Equals(UdpListener.Client.LocalEndPoint as IPEndPoint))
{
Console.WriteLine("UDP address has changed, rebinding...");
InitializeCommunicationToMiddleware();
diff --git a/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/config.py b/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/config.py
index adfb28dfb..8f593e498 100755
--- a/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/config.py
+++ b/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/config.py
@@ -54,6 +54,6 @@ INNOVENERGY_PROTOCOL_VERSION = '48TL200V3'
# S3 Credentials
-S3BUCKET = "35-c0436b6a-d276-4cd8-9c44-1eae86cf5d0e"
-S3KEY = "EXO2a70f415b6b387b5628020bd"
-S3SECRET = "qdlYoXDZyME8LEB8BFTuCmJoTzkP2Nebr2jVmlXUzgY"
+S3BUCKET = "91-c0436b6a-d276-4cd8-9c44-1eae86cf5d0e"
+S3KEY = "EXOe6dce12288f11a676c2025a1"
+S3SECRET = "xpqM4Eh0Gg1HaYVkzlR9X6PwYa-QNb-mVk0XUkwW3cc"