From 70a4a1bfb8792f1705e0b63def70eb93a0c9c4bf Mon Sep 17 00:00:00 2001 From: Kim Date: Thu, 4 May 2023 17:22:58 +0200 Subject: [PATCH] updated vrmgrabber --- csharp/App/VrmGrabber/Controller.cs | 148 ++++++++++++------ .../App/VrmGrabber/DataTypes/Installation.cs | 3 +- .../DataTypes/Methods/Installation.cs | 2 +- csharp/App/VrmGrabber/DataTypes/TreeNode.cs | 2 +- csharp/App/VrmGrabber/Database/Create.cs | 5 +- csharp/App/VrmGrabber/Database/Db.cs | 8 +- csharp/App/VrmGrabber/Database/Delete.cs | 6 +- csharp/App/VrmGrabber/Database/Read.cs | 6 +- csharp/App/VrmGrabber/Program.cs | 13 +- csharp/App/VrmGrabber/VrmGrabber.csproj | 5 + doc/Pv-Steuerung-Victron.docx | Bin 0 -> 7102 bytes doc/Pv-Steuerung-Victron.pdf | Bin 0 -> 31271 bytes 12 files changed, 124 insertions(+), 74 deletions(-) create mode 100644 doc/Pv-Steuerung-Victron.docx create mode 100644 doc/Pv-Steuerung-Victron.pdf diff --git a/csharp/App/VrmGrabber/Controller.cs b/csharp/App/VrmGrabber/Controller.cs index 93e80dd8d..8ce112351 100644 --- a/csharp/App/VrmGrabber/Controller.cs +++ b/csharp/App/VrmGrabber/Controller.cs @@ -1,75 +1,133 @@ -using System.ComponentModel.Design; -using System.Diagnostics.CodeAnalysis; -using System.Text.Json; -using System.Text.Json.Nodes; -using Flurl.Util; -using InnovEnergy.App.Backend.Database; +using HandlebarsDotNet; +using InnovEnergy.App.VrmGrabber.Database; using InnovEnergy.Lib.Victron.VictronVRM; using Microsoft.AspNetCore.Mvc; +using FILE=System.IO.File; -namespace InnovEnergy.App.Backend.Controllers; +namespace InnovEnergy.App.VrmGrabber; -using Token = String; +public record Install( + String Name, + String Ip, + UInt64 Vrm, + String Identifier, + String Serial +); -[ApiController] -[Route("api/")] +[Controller] public class Controller : ControllerBase { - [HttpGet(nameof(GetInstallation))] - [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] - public Object GetInstallation(UInt64 serialNumber) - { - var instList = Db.InstallationsAndDetails.Values.ToList(); - foreach (var detailList in instList.Select((value, index) => new { Value = value, Index = index})) - { - if (detailList.Value.All(detail => detail.Json["idSite"]?.GetValue() != serialNumber)) continue; - var retour = Db.InstallationsAndDetails.Keys.ToList()[detailList.Index].Json; - retour["details"] = JsonSerializer.Deserialize(JsonSerializer.Serialize(detailList.Value.Select(d => d.Json).ToArray())); - return retour; - } - - return new NotFoundResult(); - } - - [HttpGet(nameof(GetInstallationList))] - public Object GetInstallationList() + [HttpGet] + [Route("/")] + [Produces("text/html")] + public ActionResult Index() { var instList = Db.InstallationsAndDetails.Keys.ToList(); - if (instList.Count == 0) return 0; - var returnJson = new Dictionary>(); - foreach (var installation in instList) + if (instList.Count == 0) return new ContentResult + { + ContentType = "text/html", + Content = "

Please wait page is still loading

" + }; + + String source = @" + + + + + {{#inst}} + {{> installations}} + {{/inst}} + +
"; + + String partialSource = + @"{{Name}} + {{Ip}} + VRM + {{Identifier}} + {{Serial}}"; + + Handlebars.RegisterTemplate("installations", partialSource); + var template = Handlebars.Compile(source); + var insts = instList.Select(i => { - returnJson[installation.Name] = new Dictionary(); - returnJson[installation.Name].Add("ip", $" On-Device-Gui "); try { - returnJson[installation.Name].Add("idSite", - $" Dashboard "); - returnJson[installation.Name] - .Add("identifier", $"{installation.Json["identifier"]?.GetValue()}"); - returnJson[installation.Name].Add("machine serial number", $"{Serial(installation)}"); + return new Install(i.Name, Ip(i), i.IdSite, i.Identifier, Serial(i)); } catch (Exception) { - continue; + return new Install(i.Name, Ip(i), i.IdSite, "0", Serial(i)); } - } + }); + + + var data = new + { + inst = insts + }; - return returnJson; + var result = template(data); + + return new ContentResult + { + ContentType = "text/html", + Content = result + }; } - private static String? Ip(Installation installation) + private String Ip(Installation installation) { - return Db.InstallationsAndDetails[installation].RemoteSupportIp(); + return Db.InstallationsAndDetails[installation].RemoteSupportIp() ?? "Unknown"; } - private static String? Serial(Installation installation) + private String Serial(Installation installation) { - return Db.InstallationsAndDetails[installation].MachineSerial(); + return Db.InstallationsAndDetails[installation].MachineSerial() ?? "Unknown"; } + + // [HttpGet(nameof(GetInstallation))] + // [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] + // public Object GetInstallation(UInt64 serialNumber) + // { + // var instList = Db.InstallationsAndDetails.Values.ToList(); + // foreach (var detailList in instList.Select((value, index) => new { Value = value, Index = index})) + // { + // if (detailList.Value.All(detail => detail.Json["idSite"]?.GetValue() != serialNumber)) continue; + // var retour = Db.InstallationsAndDetails.Keys.ToList()[detailList.Index].Json; + // retour["details"] = JsonSerializer.Deserialize(JsonSerializer.Serialize(detailList.Value.Select(d => d.Json).ToArray())); + // return retour; + // } + // + // return new NotFoundResult(); + // } } + + // installation Name, ip (link uf gui), idSite (vrm link), identifier , machineserial (HQ...) diff --git a/csharp/App/VrmGrabber/DataTypes/Installation.cs b/csharp/App/VrmGrabber/DataTypes/Installation.cs index 215125a08..2d118add8 100644 --- a/csharp/App/VrmGrabber/DataTypes/Installation.cs +++ b/csharp/App/VrmGrabber/DataTypes/Installation.cs @@ -1,7 +1,6 @@ using InnovEnergy.Lib.Victron.VictronVRM; -using SQLite; -namespace InnovEnergy.App.Backend.DataTypes; +namespace InnovEnergy.App.VrmGrabber.DataTypes; public class Installation : TreeNode diff --git a/csharp/App/VrmGrabber/DataTypes/Methods/Installation.cs b/csharp/App/VrmGrabber/DataTypes/Methods/Installation.cs index 965d14203..7f89dd8d5 100644 --- a/csharp/App/VrmGrabber/DataTypes/Methods/Installation.cs +++ b/csharp/App/VrmGrabber/DataTypes/Methods/Installation.cs @@ -1,4 +1,4 @@ -namespace InnovEnergy.App.Backend.DataTypes.Methods; +namespace InnovEnergy.App.VrmGrabber.DataTypes.Methods; public static class InstallationMethods diff --git a/csharp/App/VrmGrabber/DataTypes/TreeNode.cs b/csharp/App/VrmGrabber/DataTypes/TreeNode.cs index 20b741853..e141688b7 100644 --- a/csharp/App/VrmGrabber/DataTypes/TreeNode.cs +++ b/csharp/App/VrmGrabber/DataTypes/TreeNode.cs @@ -1,6 +1,6 @@ using SQLite; -namespace InnovEnergy.App.Backend.DataTypes; +namespace InnovEnergy.App.VrmGrabber.DataTypes; public abstract partial class TreeNode { diff --git a/csharp/App/VrmGrabber/Database/Create.cs b/csharp/App/VrmGrabber/Database/Create.cs index 3af2c275b..b8d7dc25f 100644 --- a/csharp/App/VrmGrabber/Database/Create.cs +++ b/csharp/App/VrmGrabber/Database/Create.cs @@ -1,7 +1,6 @@ -using InnovEnergy.App.Backend.DataTypes; +using InnovEnergy.App.VrmGrabber.DataTypes; - -namespace InnovEnergy.App.Backend.Database; +namespace InnovEnergy.App.VrmGrabber.Database; public static partial class Db diff --git a/csharp/App/VrmGrabber/Database/Db.cs b/csharp/App/VrmGrabber/Database/Db.cs index 1cae5749e..41f91a55c 100644 --- a/csharp/App/VrmGrabber/Database/Db.cs +++ b/csharp/App/VrmGrabber/Database/Db.cs @@ -1,17 +1,15 @@ - using System.Diagnostics.CodeAnalysis; using System.Reactive.Concurrency; using System.Reactive.Linq; using System.Reactive.Threading.Tasks; -using static System.Text.Json.JsonSerializer; using InnovEnergy.Lib.Utils; using InnovEnergy.Lib.Victron.VictronVRM; - using SQLite; -using Installation = InnovEnergy.App.Backend.DataTypes.Installation; +using static System.Text.Json.JsonSerializer; +using Installation = InnovEnergy.App.VrmGrabber.DataTypes.Installation; -namespace InnovEnergy.App.Backend.Database; +namespace InnovEnergy.App.VrmGrabber.Database; public static partial class Db diff --git a/csharp/App/VrmGrabber/Database/Delete.cs b/csharp/App/VrmGrabber/Database/Delete.cs index cfa4fcff6..e15fa4b31 100644 --- a/csharp/App/VrmGrabber/Database/Delete.cs +++ b/csharp/App/VrmGrabber/Database/Delete.cs @@ -1,8 +1,6 @@ -using InnovEnergy.App.Backend.DataTypes; +using InnovEnergy.App.VrmGrabber.DataTypes; - - -namespace InnovEnergy.App.Backend.Database; +namespace InnovEnergy.App.VrmGrabber.Database; public static partial class Db diff --git a/csharp/App/VrmGrabber/Database/Read.cs b/csharp/App/VrmGrabber/Database/Read.cs index 4d084355a..4ef6c174c 100644 --- a/csharp/App/VrmGrabber/Database/Read.cs +++ b/csharp/App/VrmGrabber/Database/Read.cs @@ -1,8 +1,6 @@ -using InnovEnergy.App.Backend.DataTypes; +using InnovEnergy.App.VrmGrabber.DataTypes; - - -namespace InnovEnergy.App.Backend.Database; +namespace InnovEnergy.App.VrmGrabber.Database; public static partial class Db diff --git a/csharp/App/VrmGrabber/Program.cs b/csharp/App/VrmGrabber/Program.cs index ce467e44a..02a2a9a6b 100644 --- a/csharp/App/VrmGrabber/Program.cs +++ b/csharp/App/VrmGrabber/Program.cs @@ -1,18 +1,13 @@ -using InnovEnergy.App.Backend.Database; +using InnovEnergy.App.VrmGrabber.Database; using Microsoft.OpenApi.Models; -namespace InnovEnergy.App.Backend; +namespace InnovEnergy.App.VrmGrabber; public static class Program { - - - public static void Main(String[] args) { - //Db.CreateFakeRelations(); - Db.Init(); - + var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); @@ -26,9 +21,9 @@ public static class Program var app = builder.Build(); app.UseSwagger(); app.UseSwaggerUI(); - app.UseHttpsRedirection(); app.MapControllers(); + // app.MapGet("/", () => Controller.Index()); app.Run(); } diff --git a/csharp/App/VrmGrabber/VrmGrabber.csproj b/csharp/App/VrmGrabber/VrmGrabber.csproj index e49b745c3..45e814a59 100644 --- a/csharp/App/VrmGrabber/VrmGrabber.csproj +++ b/csharp/App/VrmGrabber/VrmGrabber.csproj @@ -3,6 +3,7 @@ + @@ -41,4 +42,8 @@ + + <_ContentIncludedByDefault Remove="wwwroot\index.html" /> + + diff --git a/doc/Pv-Steuerung-Victron.docx b/doc/Pv-Steuerung-Victron.docx new file mode 100644 index 0000000000000000000000000000000000000000..7265db3378dc0aa2043d201c9e8e94fcdba64f54 GIT binary patch literal 7102 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 literal 0 HcmV?d00001