laatzen/Common/CommonConsole/Program.cs
2025-01-10 14:57:59 +01:00

124 lines
4.2 KiB
C#

namespace CommonConsole
{
using Common.Hardware.SIRT;
using Common.Hardware.SIRT.Parameters;
using Common.Hardware.WaterMeter.eRegister;
using Common.Hardware.WaterMeter.eRegister.Features;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.IO;
using System.Net;
using System.Net.Http;
using static Xylem.Common.Service.MeterProcessState.Controllers.OldPasswordController;
public class Program
{
public static void Main()
{
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) =>
{
return true;
};
// $"https://nodes.sms-esaap.com:8081/api/v3/custom/keysetkeys?orderNumber=3229547&radioAdress=241630563"
using (var request = new HttpRequestMessage(HttpMethod.Put, $"https://nodes.sms-esaap.com:8081/api/v3/custom/keysetkeys?orderNumber=3229547&radioAdress=241630563"))
{
request.Headers.Add("Cache-Control", "no-cache");
request.Headers.Add("X-Node-Token", "d5b8c0b2-81f6-4421-80d0-44eb2093e616");
using (var response = new HttpClient().SendAsync(request).Result)
{
var content = response.Content.ReadAsStringAsync().Result;
var x = MeterPw.FromJson(content);
}
}
//var client = new SIRTClient("COM6");
//client.OpenConnection();
//Console.ReadKey();
//client.CloseConnection();
}
}
public class SIRTClient
{
private readonly ConcurrentDictionary<uint, EregisterTask> tasks;
private readonly SIRTBroadcaster broadcaster;
public SIRTClient(string comPort)
{
this.tasks = new ConcurrentDictionary<uint, EregisterTask>();
this.broadcaster = new SIRTBroadcaster(comPort);
this.broadcaster.Activated += this.Broadcaster_Activated;
this.broadcaster.Connected += this.Broadcaster_Connected;
this.broadcaster.Disconnected += this.Broadcaster_Disconnected;
this.broadcaster.Logging += this.Broadcaster_Logging;
this.broadcaster.MessageReceived += this.Broadcaster_MessageReceived;
}
internal void CloseConnection() => this.broadcaster.Close();
internal void OpenConnection() => this.broadcaster.Open();
private void Broadcaster_Activated()
{
Console.WriteLine(nameof(Broadcaster_Activated));
this.tasks.GetOrAdd(4291796386, _ =>
{
var task = new EregisterTask(868)
{
Cmd = SIRTMessage.W_PAM,
P1 = new P811
{
DelPamSemi = true,
},
Data = new ChangeRadioId
{
Address = 309030150
}.Append(new ProvidePin
{
AuthLevel = AuthLevel.III
}),
RequestAddress = 4291796386,
ResponseAddress = 309030150
};
task.Completed += this.Task_Completed;
this.broadcaster.EnqueueTask(task);
return task;
});
}
private void Broadcaster_Connected() => Console.WriteLine(nameof(Broadcaster_Connected));
private void Broadcaster_Disconnected() => Console.WriteLine(nameof(Broadcaster_Disconnected));
private void Broadcaster_Logging(string message)
{
}
private void Broadcaster_MessageReceived(SIRTMessage message)
{
}
private void Task_Completed(SIRTTask task)
{
task.Completed -= this.Task_Completed;
Console.WriteLine($"Task_Completed: {task}");
File.WriteAllText($"..\\..\\Tasks\\{task.RequestAddress}.json", JsonConvert.SerializeObject(task, new JsonSerializerSettings
{
Formatting = Formatting.Indented
}));
}
}
}