This commit is contained in:
Roland Drabesch
2025-05-27 12:38:11 +02:00
95 changed files with 50213 additions and 11925 deletions
File diff suppressed because it is too large Load Diff
+176 -41
View File
@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using LaaPackages.Features.Cordonel.Models;
using Newtonsoft.Json;
using NLog;
using System;
using System.Collections.Generic;
@@ -108,21 +109,63 @@ namespace Xylem.Common.Ui.GenesisToolBox
_currentGenesis = ((GenesisMeter)me);
var genesisStatus = new GenesisStatus();
//TODO Roland: Check this implementation --- START
if (_currentGenesis.Region.Equals("EMEA"))
{
genesisStatus.QuiescentCurrent_uA = 119.8;
genesisStatus.EstimatedProductionBatteryLoadPercent = 1.0;
}
else
{
genesisStatus.QuiescentCurrent_uA = 77.7;
genesisStatus.EstimatedProductionBatteryLoadPercent = 1.0;
}
if (GenesisStatusHandler.BuildLifeTimeInformation(_currentGenesis, genesisStatus, out _))
{
var requirements = new CordonelRequirements();
var sbMSG = new StringBuilder();
var sbMSG = new StringBuilder();
if (!GenesisStatusHandler.GetCordonelRequirementInfoFromDb($"{_currentGenesis.PcbId}", requirements, out var error))
{
if (!string.IsNullOrWhiteSpace(error))
{
sbMSG.AppendLine(error);
}
var size = RegisterConverter.ByteArrayToValue<int>(
_currentGenesis.ReadRegister(Register.Genesisflow.MeterSize));
if (!GenesisStatusHandler.GetCordonelRequirementInfoFromDbByMeterSize(size, requirements, out error))
{
if (!string.IsNullOrWhiteSpace(error))
{
sbMSG.AppendLine(error);
}
requirements = new CordonelRequirements
{
QuiescentCurrent_uA = 119.8,
EstimatedProductionBatteryLoadPercent = 1,
RequiredLifeTimeYearsAssembly = 22,
MaxDrainedBatteryLoadPercentAssembly = 4,
MaxStorageMonths = 5
};
}
}
sbMSG.AppendLine($"Standard requirement: {requirements.StandardId}.{requirements.StandardVersion}");
sbMSG.AppendLine($"Special requirement: {requirements.SpecialId}.{requirements.SpecialVersion}");
sbMSG.AppendLine();
//if (GenesisStatusHandler.GetCordonelRequirementInfoFromDb($"{_currentGenesis.PcbId}", requirements, out var error))
//{
genesisStatus.QuiescentCurrent_uA = requirements.QuiescentCurrent_uA;
genesisStatus.EstimatedProductionBatteryLoadPercent = requirements.EstimatedProductionBatteryLoadPercent;
//}
////TODO Roland: Check this implementation --- START
//else if (_currentGenesis.Region.Equals("EMEA"))
//{
// genesisStatus.QuiescentCurrent_uA = 119.8;
// genesisStatus.EstimatedProductionBatteryLoadPercent = 1.0;
//}
//else
//{
// genesisStatus.QuiescentCurrent_uA = 77.7;
// genesisStatus.EstimatedProductionBatteryLoadPercent = 1.0;
//}
if (GenesisStatusHandler.BuildLifeTimeInformation(_currentGenesis, genesisStatus, out var message))
{
if (!string.IsNullOrWhiteSpace(message))
MessageBox.Show(message);
sbMSG.AppendLine($"Pcb = {_currentGenesis.PcbId}");
sbMSG.AppendLine($"POWERMON_TotalUsedSeconds = {genesisStatus.ExceededLifeTime_s}");
@@ -135,33 +178,117 @@ namespace Xylem.Common.Ui.GenesisToolBox
sbMSG.AppendLine($"Totally drained battery load in %: {genesisStatus.DrainedBatteryLoadPercent:F2}");
sbMSG.AppendLine("");
var hasFehlern = false;
// + RemainingLifeTimeYears
// restlaufzeit monate - RequiredLifeTimeYearsAssembly
if (genesisStatus.RemainingLifeTimeYears < requirements.RequiredLifeTimeYearsAssembly)
{
hasFehlern = true;
sbMSG.AppendLine($"{nameof(genesisStatus.RemainingLifeTimeYears)}: " +
$"{genesisStatus.RemainingLifeTimeYears} < " +
$"{requirements.RequiredLifeTimeYearsAssembly}");
}
else sbMSG.AppendLine($"Restlaufzeit i.O.");
// + AlternativeRequiredBatteryLoadPercent
if (genesisStatus.AlternativeRequiredBatteryLoadPercent != null &&
genesisStatus.AlternativeRequiredBatteryLoadPercent > requirements.MaxDrainedBatteryLoadPercentAssembly)
{
sbMSG.AppendLine($"{nameof(genesisStatus.AlternativeRequiredBatteryLoadPercent)}: " +
$"{genesisStatus.AlternativeRequiredBatteryLoadPercent} > " +
$"{requirements.MaxDrainedBatteryLoadPercentAssembly}");
hasFehlern = true;
}
else sbMSG.AppendLine($"Alternative Batterieverbrauch Montage i.O.");
// max bat verbrauch - MaxDrainedBatteryLoadPercentAssembly
// + DrainedBatteryLoadPercent
if (genesisStatus.DrainedBatteryLoadPercent > requirements.MaxDrainedBatteryLoadPercentAssembly)
{
sbMSG.AppendLine($"{nameof(genesisStatus.DrainedBatteryLoadPercent)}: " +
$"{genesisStatus.DrainedBatteryLoadPercent} > " +
$"{requirements.MaxDrainedBatteryLoadPercentAssembly}");
hasFehlern = true;
}
else sbMSG.AppendLine($"Maximaler Batterieverbrauch Montage i.O.");
// + StorageMonths
// lagerzeit - MaxStorageMonths
if (genesisStatus.StorageMonths > requirements.MaxStorageMonths)
{
hasFehlern = true;
sbMSG.AppendLine($"{nameof(genesisStatus.StorageMonths)}: " +
$"{genesisStatus.StorageMonths} > " +
$"{requirements.MaxStorageMonths}");
}
else sbMSG.AppendLine($"Maximallagerzeit i.O.");
//// strom verbrauch - QuiescentCurrent_uA
//if (genesisStatus.QuiescentCurrent_uA > requirements.QuiescentCurrent_uA)
//{
// hasFehlern = true;
// sbMSG.AppendLine($"{nameof(genesisStatus.QuiescentCurrent_uA)}: " +
// $"{genesisStatus.QuiescentCurrent_uA} > " +
// $"{requirements.QuiescentCurrent_uA}");
//} // max bat verbrauch prod - EstimatedProductionBatteryLoadPercent
//else sbMSG.AppendLine($"Stromverbrauch i.O.");
//if (genesisStatus.EstimatedProductionBatteryLoadPercent > requirements.EstimatedProductionBatteryLoadPercent)
//{
// sbMSG.AppendLine($"{nameof(genesisStatus.EstimatedProductionBatteryLoadPercent)}: " +
// $"{genesisStatus.EstimatedProductionBatteryLoadPercent} > " +
// $"{requirements.EstimatedProductionBatteryLoadPercent}");
// // TODO error
// hasFehlern = true;
//}
//else sbMSG.AppendLine($"Maximaler Batterieverbrauch Produktion i.O.");
//if (_currentGenesis.Region == "NA")
//{
//if (genesisStatus.UNTStatus)
// This is the limit given by the "AlternativeRequiredBatteryLoadPercent"
if (genesisStatus.AlternativeRequiredBatteryLoadPercent != null &&
genesisStatus.DrainedBatteryLoadPercent < genesisStatus.AlternativeRequiredBatteryLoadPercent)
{
sbMSG.AppendLine($"{_currentGenesis.Region} limit OK ");
}
else
{
sbMSG.AppendLine($"{_currentGenesis.Region} limit Failed ");
}
//sbMSG.AppendLine($"UNT Limit data Limit {genesisStatus.UNTLimit} Meter has {genesisStatus.DrainedBatteryLoad_uAs}");
sbMSG.AppendLine($"Maximum drained battery load: {genesisStatus.AlternativeRequiredBatteryLoadPercent} %");
sbMSG.AppendLine($"Meter reports drained battery load: {genesisStatus.DrainedBatteryLoadPercent} %");
//if (genesisStatus.AlternativeRequiredBatteryLoadPercent != null &&
// genesisStatus.DrainedBatteryLoadPercent < requirements.MaxDrainedBatteryLoadPercentAssembly)
//{
// sbMSG.AppendLine($"{_currentGenesis.Region} limit OK ");
//}
//else
//{
// sbMSG.AppendLine($"{_currentGenesis.Region} limit Failed ");
//}
////sbMSG.AppendLine($"UNT Limit data Limit {genesisStatus.UNTLimit} Meter has {genesisStatus.DrainedBatteryLoad_uAs}");
//sbMSG.AppendLine($"Maximum drained battery load: {genesisStatus.AlternativeRequiredBatteryLoadPercent} %");
//sbMSG.AppendLine($"Meter reports drained battery load: {genesisStatus.DrainedBatteryLoadPercent} %");
var preproductionLimit = genesisStatus.AlternativeRequiredBatteryLoadPercent -
genesisStatus.EstimatedProductionBatteryLoadPercent;
if (genesisStatus.DrainedBatteryLoadPercent < preproductionLimit)
{
sbMSG.AppendLine($"{_currentGenesis.Region} preproduction limit OK ");
}
//var preproductionLimit = genesisStatus.AlternativeRequiredBatteryLoadPercent -
// genesisStatus.EstimatedProductionBatteryLoadPercent;
//if (genesisStatus.DrainedBatteryLoadPercent < preproductionLimit)
//{
// sbMSG.AppendLine($"{_currentGenesis.Region} preproduction limit OK ");
//}
//else
//{
// sbMSG.AppendLine($"{_currentGenesis.Region} preproduction limit Failed ");
//}
if (hasFehlern)
sbMSG.AppendLine($"Battery lifetime limits sind Übreschritten");
else
{
sbMSG.AppendLine($"{_currentGenesis.Region} preproduction limit Failed ");
}
sbMSG.AppendLine($"Battery lifetime limits sind OK");
sbMSG.AppendLine(
);
sbMSG.AppendLine($"Preproduction max. drained battery load: {genesisStatus.AlternativeRequiredBatteryLoadPercent} %");
sbMSG.AppendLine($"Meter reports drained battery load: {genesisStatus.DrainedBatteryLoadPercent} %");
@@ -206,12 +333,22 @@ namespace Xylem.Common.Ui.GenesisToolBox
//ExceededLifeTime_s * 77.7)
if (hasFehlern)
{
MessageBox.Show(sbMSG.ToString(), $"Battery for {_currentGenesis.PcbId} has remaining life " +
$"time of {genesisStatus.RemainingLifeTimeYears:F2} years");
$"time of {genesisStatus.RemainingLifeTimeYears:F2} years", buttons:MessageBoxButtons.OK,icon:MessageBoxIcon.Error);
} else
{
MessageBox.Show(sbMSG.ToString(), $"Battery for {_currentGenesis.PcbId} has remaining life " +
$"time of {genesisStatus.RemainingLifeTimeYears:F2} years", buttons:MessageBoxButtons.OK,icon:MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("Failed to get life time information");
MessageBox.Show("Failed to get life time information",caption:null,buttons:MessageBoxButtons.OK,icon:MessageBoxIcon.Error);
}
}
}
@@ -219,10 +356,8 @@ namespace Xylem.Common.Ui.GenesisToolBox
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
MessageBox.Show(text:ex.ToString(),caption:null,buttons:MessageBoxButtons.OK,icon:MessageBoxIcon.Error);
}
}
@@ -728,6 +728,10 @@
<Project>{26afcf1e-1287-48b8-a506-32b1e8a0dd0e}</Project>
<Name>WaterMeterRegisters</Name>
</ProjectReference>
<ProjectReference Include="..\..\LaaPackages\LaaPackages.Features.Cordonel\LaaPackages.Features.Cordonel.csproj">
<Project>{8BEFD3AC-BB21-4B62-8D9A-CF8CBFD439EB}</Project>
<Name>LaaPackages.Features.Cordonel</Name>
</ProjectReference>
<ProjectReference Include="..\..\Logic.PrdoctionToProductMapper\Logic.ProductionToProductMapper.csproj">
<Project>{D0C859D9-D55E-4E85-AC50-0FF31B1CE50D}</Project>
<Name>Logic.ProductionToProductMapper</Name>