Merge branch 'main' of https://slm.sms-esaap.com/la_operations/laa_production into main
This commit is contained in:
commit
c5dbb895d2
@ -14,5 +14,5 @@ using System.Reflection;
|
||||
//[assembly: AssemblyVersion("1.2.*.0")]
|
||||
|
||||
|
||||
[assembly: AssemblyVersion("2.3.1.*")]
|
||||
[assembly: AssemblyFileVersion("2.3.1.0")]
|
||||
[assembly: AssemblyVersion("2.3.2.*")]
|
||||
[assembly: AssemblyFileVersion("2.3.2.0")]
|
||||
@ -933,6 +933,80 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
return responseRecord;
|
||||
}
|
||||
|
||||
private String GetPassword()
|
||||
{
|
||||
var url = ServiceUrls.GenesisGetPasswordServiceUrl();
|
||||
String password;
|
||||
|
||||
//without PCB ID it is not possible to login
|
||||
var firstPcbId = GetPcbId();
|
||||
if (string.IsNullOrEmpty(firstPcbId) || firstPcbId.Length < 8)
|
||||
{
|
||||
if (firstPcbId != null && firstPcbId.Length < 8)
|
||||
{
|
||||
|
||||
Thread.Sleep(250);
|
||||
}
|
||||
if (string.IsNullOrEmpty(GetPcbId()))
|
||||
{
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
url += PcbId;
|
||||
try
|
||||
{
|
||||
//use
|
||||
var http = (HttpWebRequest)WebRequest.Create(url);
|
||||
var response = (HttpWebResponse)http.GetResponse();
|
||||
var responseStream = response.GetResponseStream();
|
||||
if (responseStream == null)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
using (var sr = new StreamReader(responseStream))
|
||||
{
|
||||
var responseJson = sr.ReadToEnd();
|
||||
password = responseJson.Trim('"');
|
||||
|
||||
|
||||
}
|
||||
_logger.Info($"Slot:{Slot} - Got password from GenesisPasswordServiceUrl, URL({url})");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Cannot get password from GenesisPasswordService, " +
|
||||
$"URL({url}), Error({ex.Message})");
|
||||
var listOfOfflinePasswords = JsonConvert.DeserializeObject<List<OfflinePasswordItem>>(File.ReadAllText(ProgramConfig.OfflineInfoFile));
|
||||
password = listOfOfflinePasswords.First(x => x.PcbId == PcbId).Password;
|
||||
if (!string.IsNullOrEmpty(password))
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Got password from password file!");
|
||||
}
|
||||
}
|
||||
|
||||
return password;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <remarks date="2018JAN08" author="drabesch">
|
||||
/// Get password from server
|
||||
/// </remarks>
|
||||
public Boolean Login()
|
||||
{
|
||||
var password = GetPassword();
|
||||
return !string.IsNullOrEmpty(password) && Login(password);
|
||||
}
|
||||
|
||||
/// <remarks date="2018JAN08" author="drabesch">
|
||||
/// Get password from server
|
||||
/// </remarks>
|
||||
public Boolean QuickLogin()
|
||||
{
|
||||
var password = GetPassword();
|
||||
return !string.IsNullOrEmpty(password) && Login(password, true, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Login with identical password as last time
|
||||
@ -950,124 +1024,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
return string.IsNullOrEmpty(_password) ? Login() : Login(_password);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <remarks date="2018JAN08" author="drabesch">
|
||||
/// Get password from server
|
||||
/// </remarks>
|
||||
public Boolean Login()
|
||||
{
|
||||
var url = ServiceUrls.GenesisGetPasswordServiceUrl();
|
||||
String autoPassword;
|
||||
|
||||
//without PCB ID it is not possible to login
|
||||
var firstPcbId = GetPcbId();
|
||||
if (string.IsNullOrEmpty(firstPcbId) || firstPcbId.Count() < 8)
|
||||
{
|
||||
if (firstPcbId != null && firstPcbId.Count() < 8)
|
||||
{
|
||||
|
||||
Thread.Sleep(250);
|
||||
}
|
||||
if (string.IsNullOrEmpty(GetPcbId()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
url += PcbId;
|
||||
try
|
||||
{
|
||||
//use
|
||||
var http = (HttpWebRequest)WebRequest.Create(url);
|
||||
var response = (HttpWebResponse)http.GetResponse();
|
||||
var responseStream = response.GetResponseStream();
|
||||
if (responseStream == null)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
using (var sr = new StreamReader(responseStream))
|
||||
{
|
||||
var responseJson = sr.ReadToEnd();
|
||||
autoPassword = responseJson.Trim('"');
|
||||
|
||||
|
||||
}
|
||||
_logger.Info($"Slot:{Slot} - Got password from GenesisPasswordServiceUrl, URL({url})");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Cannot get password from GenesisPasswordService, " +
|
||||
$"URL({url}), Error({ex.Message})");
|
||||
var listOfOfflinePasswords = JsonConvert.DeserializeObject<List<OfflinePasswordItem>>(File.ReadAllText(ProgramConfig.OfflineInfoFile));
|
||||
autoPassword = listOfOfflinePasswords.First(x => x.PcbId == PcbId).Password;
|
||||
if (!string.IsNullOrEmpty(autoPassword))
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Got password from password file!");
|
||||
}
|
||||
}
|
||||
|
||||
return Login(autoPassword);
|
||||
}
|
||||
|
||||
|
||||
/// <remarks date="2018JAN08" author="drabesch">
|
||||
/// Get password from server
|
||||
/// </remarks>
|
||||
public Boolean QuickLogin()
|
||||
{
|
||||
var url = ServiceUrls.GenesisGetPasswordServiceUrl();
|
||||
String autoPassword;
|
||||
|
||||
//without PCB ID it is not possible to login
|
||||
var firstPcbId = GetPcbId();
|
||||
if (string.IsNullOrEmpty(firstPcbId) || firstPcbId.Length < 8)
|
||||
{
|
||||
if (firstPcbId != null && firstPcbId.Length < 8)
|
||||
{
|
||||
|
||||
Thread.Sleep(250);
|
||||
}
|
||||
if (string.IsNullOrEmpty(GetPcbId()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
url += PcbId;
|
||||
try
|
||||
{
|
||||
//use
|
||||
var http = (HttpWebRequest)WebRequest.Create(url);
|
||||
var response = (HttpWebResponse)http.GetResponse();
|
||||
var responseStream = response.GetResponseStream();
|
||||
if (responseStream == null)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
using (var sr = new StreamReader(responseStream))
|
||||
{
|
||||
var responseJson = sr.ReadToEnd();
|
||||
autoPassword = responseJson.Trim('"');
|
||||
|
||||
|
||||
}
|
||||
_logger.Info($"Slot:{Slot} - Got password from GenesisPasswordServiceUrl, URL({url})");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Cannot get password from GenesisPasswordService, " +
|
||||
$"URL({url}), Error({ex.Message})");
|
||||
var listOfOfflinePasswords = JsonConvert.DeserializeObject<List<OfflinePasswordItem>>(File.ReadAllText(ProgramConfig.OfflineInfoFile));
|
||||
autoPassword = listOfOfflinePasswords.First(x => x.PcbId == PcbId).Password;
|
||||
if (!string.IsNullOrEmpty(autoPassword))
|
||||
{
|
||||
_logger.Info($"Slot:{Slot} - Got password from password file!");
|
||||
}
|
||||
}
|
||||
|
||||
return Login(autoPassword, true, true);
|
||||
}
|
||||
|
||||
private class OfflinePasswordItem
|
||||
{
|
||||
public OfflinePasswordItem(String pcbId, String password)
|
||||
@ -1079,27 +1035,16 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
|
||||
public String PcbId
|
||||
{
|
||||
get; private set;
|
||||
get;
|
||||
}
|
||||
public String Password
|
||||
{
|
||||
get; private set;
|
||||
get;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>
|
||||
/// Starting a timer to keep session active,
|
||||
/// starting the <see cref="KeepSessionThreadLoop"/>.
|
||||
/// </summary>
|
||||
/// <param name="password">password string to login</param>
|
||||
/// <returns></returns>
|
||||
public Boolean Login(String password)
|
||||
{
|
||||
return Login(password, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Starting a timer to keep session active,
|
||||
/// starting the <see cref="KeepSessionThreadLoop"/>.
|
||||
@ -1115,7 +1060,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
/// <remarks date="2021-Feb-02" author="Thomas Wiedebusch">
|
||||
/// - Avoid retries during login, a retry will lock the Genesis for 2s, 4s, 8s, 16s and so on.
|
||||
/// </remarks>
|
||||
private Boolean Login(String password, Boolean runImmediately, Boolean quickLogin = false)
|
||||
public Boolean Login(String password, Boolean runImmediately = true, Boolean quickLogin = false)
|
||||
{
|
||||
|
||||
var backupRetries = CommunicationConfig.RequestRetries;
|
||||
@ -1140,9 +1085,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
_logger.Info($"Slot:{Slot} - Successful logged in to meter");
|
||||
StartKeepSession();
|
||||
|
||||
|
||||
|
||||
|
||||
if (quickLogin)
|
||||
{
|
||||
WriteRegister(Register.Mertrologyasst.PulseMode, 0, true, true);
|
||||
@ -1150,7 +1092,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
WriteRegister("SENSUSRADIO_SystemState", 1, true, true);
|
||||
}
|
||||
|
||||
|
||||
if (Configuration != null && !Configuration.ProductionMode)
|
||||
{
|
||||
IsDevelopmentUsage = true;
|
||||
@ -1373,23 +1314,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
_logger.Info($"Meter size: {MeterSize}");
|
||||
//remove unused registers with invalid version
|
||||
var tempConfigRegisters = _configRegister.MeterRegisterDic.ToList();
|
||||
//tempConfigRegisters.ToList()
|
||||
//var sb = new List<string>();
|
||||
//var listoFREGISTERADRESSES = new List <Tuple<byte[], string>>();
|
||||
//foreach (var item in tempConfigRegisters)
|
||||
//{
|
||||
// listoFREGISTERADRESSES.Add(new Tuple<byte[], string>(item.Key.RegisterAddress, item.Key.GetIdent()));
|
||||
//}
|
||||
|
||||
|
||||
//var dicAdressName = new Dictionary<byte[], string>();
|
||||
|
||||
//listoFREGISTERADRESSES.ForEach(a => sb.Add($"dicAdressName.Add(new byte[] {{ 0x{a.Item1[0]},0x{a.Item1[1]} }}, \"{a.Item2} \");{Environment.NewLine}" ));
|
||||
//var stOutput ="";
|
||||
|
||||
//var flHash = new HashSet<string>(sb);
|
||||
//flHash.ToList().ForEach(a => stOutput = stOutput + a);
|
||||
|
||||
|
||||
_configRegister.MeterRegisterDic.Clear();
|
||||
foreach (var registerToCheck in tempConfigRegisters)
|
||||
@ -1747,7 +1671,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
|
||||
{
|
||||
var response = listPcb.ToArray();
|
||||
PcbId = Encoding.ASCII.GetString(response).Split('\0')[0];
|
||||
|
||||
|
||||
if (PcbId.Length < 8 && retriesLeft >= 1)
|
||||
{
|
||||
return GetPcbId(expectedLength, retriesLeft - 1);
|
||||
|
||||
@ -120,7 +120,9 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore
|
||||
/// Start Login with out password service and a fixed password
|
||||
/// </summary>
|
||||
/// <param name="password">password for login</param>
|
||||
Boolean Login(String password);
|
||||
/// <param name="runImmediately">execute immediately</param>
|
||||
/// <param name="quickLogin">speed up login</param>
|
||||
Boolean Login(String password, Boolean runImmediately = true, Boolean quickLogin = false);
|
||||
|
||||
/// <summary>
|
||||
/// set up measurement parameter and set meter into test-mode
|
||||
|
||||
@ -1935,7 +1935,7 @@ namespace Xylem.Common.Ui.GenesisToolBox
|
||||
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
if (!_currentGenesis.IsLoggedOn) _currentGenesis.ReLogin();
|
||||
_currentGenesis.ReLogin();
|
||||
_meterFwUpdate.UploadConfigFile();
|
||||
Thread.Sleep(1000);
|
||||
}).ContinueWith(delegate
|
||||
|
||||
Loading…
Reference in New Issue
Block a user