From d1fb0a8ac25566720944fefbaedef6649ccde97d Mon Sep 17 00:00:00 2001 From: Kim Date: Thu, 4 May 2023 13:59:47 +0200 Subject: [PATCH] added VrmGrabber to replicate VRM installations in memory (to run run the server.py file with flask run) FLASK_APP=server.py --- csharp/App/Backend/db.sqlite | Bin 540672 -> 540672 bytes csharp/App/Backend/exoscale.toml | 10 ++++ csharp/App/VrmGrabber/Controller.cs | 54 +++++++++++++++--- csharp/App/VrmGrabber/Database/Db.cs | 13 ++--- csharp/App/VrmGrabber/server.py | 14 +++++ csharp/Lib/Utils/JsonNodeAccessors.cs | 3 +- csharp/Lib/Victron/VictronVRM/Installation.cs | 3 +- 7 files changed, 81 insertions(+), 16 deletions(-) create mode 100644 csharp/App/Backend/exoscale.toml create mode 100644 csharp/App/VrmGrabber/server.py diff --git a/csharp/App/Backend/db.sqlite b/csharp/App/Backend/db.sqlite index f344d58ad6952a255d4d921dad91754336e87d73..984f315b51aa379b578faa9a563d68a91379e28a 100644 GIT binary patch delta 65869 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 diff --git a/csharp/App/Backend/exoscale.toml b/csharp/App/Backend/exoscale.toml new file mode 100644 index 000000000..58336b073 --- /dev/null +++ b/csharp/App/Backend/exoscale.toml @@ -0,0 +1,10 @@ +defaultaccount = "Kim" + +[[accounts]] + account = "innovenergy-ag" + defaultZone = "ch-dk-2" + endpoint = "https://api.exoscale.com/v1" + environment = "" + key = "EXOf67c5b528282988503ddab12" + name = "Kim" + secret = "KBFh5HvoSQcTtGYcWSm4Qn4m-WFutKe89UqsOdOL-ts" diff --git a/csharp/App/VrmGrabber/Controller.cs b/csharp/App/VrmGrabber/Controller.cs index e1a10b42d..93e80dd8d 100644 --- a/csharp/App/VrmGrabber/Controller.cs +++ b/csharp/App/VrmGrabber/Controller.cs @@ -1,6 +1,7 @@ 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 InnovEnergy.Lib.Victron.VictronVRM; @@ -14,22 +15,61 @@ using Token = String; [Route("api/")] public class Controller : ControllerBase { - [HttpPost(nameof(GetInstallation))] + [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(String serialNumber) + public Object GetInstallation(UInt64 serialNumber) { - - foreach (var detailList in Db.InstallationsAndDetails.Values.ToList().Select((Value, Index) => new {Value, Index})) + 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.FormattedValue != serialNumber)) continue; - var retour = JsonSerializer.Serialize(Db.InstallationsAndDetails.Keys.ToList()[detailList.Index]); - retour += JsonSerializer.Serialize(detailList.Value); + 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() + { + var instList = Db.InstallationsAndDetails.Keys.ToList(); + if (instList.Count == 0) return 0; + var returnJson = new Dictionary>(); + foreach (var installation in instList) + { + 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)}"); + } + catch (Exception) + { + continue; + } + } + + return returnJson; + } + + private static String? Ip(Installation installation) + { + return Db.InstallationsAndDetails[installation].RemoteSupportIp(); + } + + private static String? Serial(Installation installation) + { + return Db.InstallationsAndDetails[installation].MachineSerial(); + } } +// installation Name, ip (link uf gui), idSite (vrm link), identifier , machineserial (HQ...) + diff --git a/csharp/App/VrmGrabber/Database/Db.cs b/csharp/App/VrmGrabber/Database/Db.cs index bf3fc547a..1cae5749e 100644 --- a/csharp/App/VrmGrabber/Database/Db.cs +++ b/csharp/App/VrmGrabber/Database/Db.cs @@ -3,8 +3,7 @@ using System.Diagnostics.CodeAnalysis; using System.Reactive.Concurrency; using System.Reactive.Linq; using System.Reactive.Threading.Tasks; -using System.Text.Json; -using Flurl.Util; +using static System.Text.Json.JsonSerializer; using InnovEnergy.Lib.Utils; using InnovEnergy.Lib.Victron.VictronVRM; @@ -52,10 +51,10 @@ public static partial class Db [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] private static async Task>> UpdateInstallationsAndDetailsFromVrm(Int64 _) { - var content = await File.ReadAllTextAsync("./token.json"); + var fileContent = await File.ReadAllTextAsync("./token.json"); - var acc = JsonSerializer.Deserialize(content)!; - using var user = VrmAccount.Token(acc.idUser, acc.token); + var acc = Deserialize(fileContent); + var user = VrmAccount.Token(acc.idUser, acc.token); var installations = await user.GetInstallations(); return installations .Do(i=>i.Name.WriteLine()) @@ -65,6 +64,6 @@ public static partial class Db public class AccToken { - public UInt64 idUser; - public String token; + public UInt64 idUser { get; init;} + public String token { get; init;} } \ No newline at end of file diff --git a/csharp/App/VrmGrabber/server.py b/csharp/App/VrmGrabber/server.py new file mode 100644 index 000000000..27abdbd52 --- /dev/null +++ b/csharp/App/VrmGrabber/server.py @@ -0,0 +1,14 @@ +import requests as requests +from flask import Flask +from json2html import json2html + +app = Flask(__name__) +serverUrl = "https://127.0.0.1:7087/api" #todo change me + +@app.route('/') +def hello(): + json = requests.get(serverUrl + '/GetInstallationList', verify=False) #TODO VERIFY + + if json.content == b'0': + return "Still loading Installations" + return json2html.convert(json = json.json(), escape=False) diff --git a/csharp/Lib/Utils/JsonNodeAccessors.cs b/csharp/Lib/Utils/JsonNodeAccessors.cs index 8b05e97af..4b2ecfe0c 100644 --- a/csharp/Lib/Utils/JsonNodeAccessors.cs +++ b/csharp/Lib/Utils/JsonNodeAccessors.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Text.Json.Nodes; namespace InnovEnergy.Lib.Utils; @@ -7,7 +8,7 @@ public static class JsonNodeAccessors public static T Get(this JsonNode n, String propName) => n[propName]!.GetValue(); - + public static String GetString(this JsonNode n, String propName) => n.Get(propName); public static Boolean GetBoolean(this JsonNode n, String propName) => n.Get(propName); diff --git a/csharp/Lib/Victron/VictronVRM/Installation.cs b/csharp/Lib/Victron/VictronVRM/Installation.cs index aa233e275..269289fe1 100644 --- a/csharp/Lib/Victron/VictronVRM/Installation.cs +++ b/csharp/Lib/Victron/VictronVRM/Installation.cs @@ -8,6 +8,7 @@ namespace InnovEnergy.Lib.Victron.VictronVRM; public readonly partial record struct Installation(VrmAccount VrmAccount, JsonNode Json) { + public UInt64 IdSite => Json.GetUInt64("idSite"); public UnixTime Created => Json.GetUInt32("syscreated").Apply(UnixTime.FromTicks); @@ -15,7 +16,7 @@ public readonly partial record struct Installation(VrmAccount VrmAccount, JsonNo public String Name => Json.GetString("name"); public String Notes => Json.GetString("notes"); public String PhoneNumber => Json.GetString("phonenumber"); - + public String Identifier => Json.GetString("identifier"); // TODO: alternative way to handle settings? make them writeable here and have an UpdateInstallation function? // public String Name // {