diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2025-08-07 16:22:43 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2025-08-07 16:22:43 +0300 |
| commit | 61bc5d6672a0dd3c7fd0f8e1a95d5c037fb20cab (patch) | |
| tree | 5963d8d118fd31e34de5d89463542ef4ccf56136 /Software | |
| parent | 8bbeffb422e8535c399f1eb76a55fdee5a1c65b6 (diff) | |
| download | Tango-61bc5d6672a0dd3c7fd0f8e1a95d5c037fb20cab.tar.gz Tango-61bc5d6672a0dd3c7fd0f8e1a95d5c037fb20cab.zip | |
Telemetry.
Diffstat (limited to 'Software')
5 files changed, 89 insertions, 11 deletions
diff --git a/Software/Visual_Studio/Tango.BL/FineTuning/FineTuningTypes.cs b/Software/Visual_Studio/Tango.BL/FineTuning/FineTuningTypes.cs index 81326481d..36644d677 100644 --- a/Software/Visual_Studio/Tango.BL/FineTuning/FineTuningTypes.cs +++ b/Software/Visual_Studio/Tango.BL/FineTuning/FineTuningTypes.cs @@ -9,8 +9,11 @@ namespace Tango.BL.FineTuning { public enum FineTuningTypes { + //Automatic [Description("Fine Tuning")] FineTuning, + + //Manual [Description("Manual Fine Tuning")] ManualFineTuning, } diff --git a/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs b/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs index 4a08f9645..8d8023c95 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs +++ b/Software/Visual_Studio/Tango.Telemetry/Mappers/JobRunMapper.cs @@ -79,10 +79,13 @@ namespace Tango.Telemetry.Mappers tRun.Thread = _rmls.FirstOrDefault(x => x.Guid == run.RmlGuid)?.FinalName; tRun.NumberOfUnits = Math.Max(run.NumberOfUnits, 1); + //Infer Number of Spools. + tRun.NumberOfSpools = run.MachineTypeEnum == MachineTypes.Eureka ? 4 : 1; + //What the user entered including white gaps leaving out spools and number of units. tRun.LogicalLength = run.JobLogicalLength; - //What the user entered talking into account white gaps, spools and number of units. + //What the user entered taking into account white gaps, spools and number of units. //(White gaps between units is not calculated here and is added further here when the JobFile is ready with the inter-segment length). tRun.ActualLength = (run.MachineTypeEnum == MachineTypes.Eureka ? run.JobLogicalLength * 4 : run.JobLogicalLength) * tRun.NumberOfUnits; diff --git a/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs b/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs index 502b6397f..883da2b8a 100644 --- a/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs +++ b/Software/Visual_Studio/Tango.Telemetry/Telemetries/TelemetryJobRun.cs @@ -67,26 +67,43 @@ namespace Tango.Telemetry.Telemetries public String JobName { get; set; } public String Kind { get; set; } public String Thread { get; set; } - public int NumberOfUnits { get; set; } + public int NumberOfUnits { get; set; } // Minimum 1. public int InterSegmentLength { get; set; } public bool LubricationEnabled { get; set; } public int SpoolTypeDistribution { get; set; } public int NumberOfSpools { get; set; } + //What the user entered including white gaps leaving out and number of units and number of spools. public double LogicalLength { get; set; } + + //What the user entered, taking into account white gaps and number of units, all multiplied by the number of spools. public double ActualLength { get; set; } + + //The actual length the machine had ran, including white gaps, number of units and dryer buffer length, all multiplied by the number of spools. public double TotalLength { get; set; } + + //The position where the job started relative to the ActualLength (This will greater than zero only if we are resuming a jobrun that had stopped in the middle). public double StartPosition { get; set; } + + //The position where the job stopped relative to the ActualLength. public double EndPosition { get; set; } + + //EndPosition - StartPosition public double Distance { get; set; } public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } + + //EndTime - StartTime public TimeSpan Duration { get; set; } + + //The time it took from the moment the user executed the job to the time it actually started dyeing. public TimeSpan HeatingDuration { get; set; } + //Completed/Failed,Aborted (By the user) public String Status { get; set; } + //Total quantities of ink dispensed during this run in nanoliters (better to display as cubic liter maybe). public long OutputCyan { get; set; } public long OutputMagenta { get; set; } public long OutputYellow { get; set; } @@ -105,6 +122,7 @@ namespace Tango.Telemetry.Telemetries public long OutputTransparent { get; set; } public long OutputLubricant { get; set; } + //The error that has occurred when Status = "Failed" public String FailureReason { get; set; } public String ApplicationVersion { get; set; } @@ -114,7 +132,8 @@ namespace Tango.Telemetry.Telemetries public VectorFineTuningRunModel FineTuning { get; set; } //Dynamic - public ProcessParameters ProcessParameters { get; set; } //Dynamic + //ProcessParamaters.DyeingSpeed = The speed in which the machine is dyeing the thread in centimeters per second. + public ProcessParameters ProcessParameters { get; set; } public TelemetryJobRun() { diff --git a/Software/Visual_Studio/Tango.Telemetry/TelemetryPublishPackage.cs b/Software/Visual_Studio/Tango.Telemetry/TelemetryPublishPackage.cs index b008a210f..2e7a43361 100644 --- a/Software/Visual_Studio/Tango.Telemetry/TelemetryPublishPackage.cs +++ b/Software/Visual_Studio/Tango.Telemetry/TelemetryPublishPackage.cs @@ -19,8 +19,8 @@ namespace Tango.Telemetry public String Environment { get; set; } public String SerialNumber { get; set; } public String MachineType { get; set; } - public String Organization { get; internal set; } - public String Site { get; internal set; } + public String Organization { get; set; } + public String Site { get; set; } public String TelemetryName { get; internal set; } public int TelemetryVersion { get; internal set; } diff --git a/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs index 0565ab00d..fee2fe346 100644 --- a/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.Telemetry.Tester.IOT.CLI/Program.cs @@ -9,18 +9,24 @@ using Tango.Logging; using Tango.Telemetry.Destinations; using Tango.Telemetry.Mappers; using Tango.Telemetry.Sources; +using Tango.Telemetry.Telemetries; +using System.Data.Entity; +using Tango.BL.Entities; namespace Tango.Telemetry.Tester.IOT.CLI { class Program { + private static List<MachineExtendedInfo> _machineInfos; + private static int _counter = 1; + static void Main(string[] args) { LogManager.Default.RegisterLogger(new Tango.Logging.VSOutputLogger("IOT TESTER")); TelemetryPublisher publisher = new TelemetryPublisher(new TelemetryPublisherConfiguration() { - Environment = "DEV", + Environment = "PROD", SerialNumber = "dev-machine", Organization = "Twine", MachineType = MachineTypes.TS1800, @@ -35,6 +41,7 @@ namespace Tango.Telemetry.Tester.IOT.CLI publisher.RegisterDestination(new TelemetryAzureHubDestination("HostName=iot-twine-dev-weu.azure-devices.net;DeviceId=telemetry-dev-01;SharedAccessKey=cZhCMhiVL+TF7p13fpX+lFmyxoy8ZqCkbxUwumWw18Q=")); publisher.PublishResultAvailable += Publisher_PublishResultAvailable; + publisher.PublishingPackage += Publisher_PublishingPackage; publisher.Start().GetAwaiter().GetResult(); @@ -49,6 +56,42 @@ namespace Tango.Telemetry.Tester.IOT.CLI publisher.Dispose(); } + private static void Publisher_PublishingPackage(object sender, TelemetryPackagePublishingEventArgs e) + { + TelemetryJobRun tRun = e.Package.PendingTelemetry.TelemetryObject as TelemetryJobRun; + + if (_machineInfos == null) + { + using (ObservablesContext db = ObservablesContext.CreateDefault()) + { + _machineInfos = new List<MachineExtendedInfo>(); + var machinesOrganizations = db.Machines.Include(x => x.Organization).Select(x => new { x, x.Organization.Name, x.SiteGuid }).ToList(); + foreach (var item in machinesOrganizations) + { + MachineExtendedInfo info = new MachineExtendedInfo(); + info.Machine = item.x; + info.Organization = item.Name; + info.Site = db.Sites.FirstOrDefault(x => x.Guid == item.SiteGuid)?.Name; + _machineInfos.Add(info); + } + } + } + + var machineInfo = _machineInfos.FirstOrDefault(x => x.Machine.Guid == tRun.MachineGuid); + + if (machineInfo == null) + { + e.Cancel = true; + } + else + { + e.Package.Organization = machineInfo.Organization; + e.Package.Site = machineInfo.Site; + e.Package.SerialNumber = machineInfo.Machine.SerialNumber; + e.Package.MachineType = machineInfo.Machine.Type.ToShortName(); + } + } + private static void Publisher_PublishResultAvailable(object sender, TelemetryPublishResultAvailableEventArgs e) { Console.ForegroundColor = ConsoleColor.DarkGray; @@ -62,7 +105,7 @@ namespace Tango.Telemetry.Tester.IOT.CLI else { Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine("Package successfully published."); + Console.WriteLine($"Package {_counter++} successfully published."); } Console.ResetColor(); @@ -70,6 +113,13 @@ namespace Tango.Telemetry.Tester.IOT.CLI } } + public class MachineExtendedInfo + { + public Machine Machine { get; set; } + public String Organization { get; set; } + public String Site { get; set; } + } + public class JobRunsTestSource : ITelemetryHistorySource { private bool _busy; @@ -91,18 +141,21 @@ namespace Tango.Telemetry.Tester.IOT.CLI public Task<IEnumerable<ITelemetry>> RequestHistory(DateTime from) { _busy = true; - + ObservablesContext.OverrideSettingsDataSource(new Core.DataSource() { - Address = "localhost\\SQLPPC", - IntegratedSecurity = true, + Address = "twine.database.windows.net", + IntegratedSecurity = false, Catalog = "Tango", + UserName = "Roy", + Password = "Aa123456", Type = Core.DataSourceType.SQLServer, }); using (ObservablesContext db = ObservablesContext.CreateDefault()) { - var runs = db.JobRuns.OrderByDescending(x => x.LastUpdated).Where(x => x.LastUpdated < from).Take(1).ToList(); + var runs = db.JobRuns.Where(x => x.LastUpdated < from).OrderByDescending(x => x.LastUpdated).Take(100).ToList(); + var runsT = runs.Select(x => JobRunMapper.MapJobRun(x)).ToList(); _busy = false; |
