From 4124946037a3c62aaffea4cf72bbcbf7441b4d57 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 16 Mar 2022 11:57:04 +0100 Subject: [PATCH] Ok messaggi in ingresso x allarmi attivati --- MP.MONO.Core/Constants.cs | 2 + MP.MONO.DECODER/MP.MONO.DECODER.csproj | 16 ++++++++ MP.MONO.DECODER/Program.cs | 54 ++++++++++++++++++++++++++ MP.MONO.DECODER/appsettings.json | 34 ++++++++++++++++ MP.MONO.Data/MapoMonoContext.cs | 5 ++- MP.MONO.SIM/Program.cs | 8 +++- 6 files changed, 115 insertions(+), 4 deletions(-) create mode 100644 MP.MONO.DECODER/appsettings.json diff --git a/MP.MONO.Core/Constants.cs b/MP.MONO.Core/Constants.cs index ab6f737..d35c70f 100644 --- a/MP.MONO.Core/Constants.cs +++ b/MP.MONO.Core/Constants.cs @@ -26,6 +26,7 @@ namespace MP.MONO.Core // Dati correnti public static readonly string ACT_LOG_CURR_KEY = $"{BASE_HASH}:Current:ActivityLog"; + public static readonly string ALARM_ACT_KEY = $"{BASE_HASH}:Current:AlarmsVal"; public static readonly string ALARM_CURR_KEY = $"{BASE_HASH}:Current:Alarms"; public static readonly string EVENT_LOG_CURR_KEY = $"{BASE_HASH}:Current:EventsLog"; public static readonly string MACH_STATS_CURR_KEY = $"{BASE_HASH}:Current:MachStats"; @@ -37,6 +38,7 @@ namespace MP.MONO.Core // Canali messaggi REDIS public static readonly string ACT_LOG_M_QUEUE = $"ActivityLog"; + public static readonly string ALARM_ACT_VAL = $"AlarmsActVal"; public static readonly string ALARM_M_QUEUE = $"Alarms"; public static readonly string EVENT_LOG_M_QUEUE = $"EventsLog"; public static readonly string MACH_STATS_M_QUEUE = $"MachStats"; diff --git a/MP.MONO.DECODER/MP.MONO.DECODER.csproj b/MP.MONO.DECODER/MP.MONO.DECODER.csproj index ba954d9..9aa6dfb 100644 --- a/MP.MONO.DECODER/MP.MONO.DECODER.csproj +++ b/MP.MONO.DECODER/MP.MONO.DECODER.csproj @@ -8,6 +8,18 @@ AnyCPU;x86;x64 + + + + + + + PreserveNewest + true + PreserveNewest + + + @@ -15,6 +27,10 @@ + + + + Always diff --git a/MP.MONO.DECODER/Program.cs b/MP.MONO.DECODER/Program.cs index 7c59314..2c26cec 100644 --- a/MP.MONO.DECODER/Program.cs +++ b/MP.MONO.DECODER/Program.cs @@ -1,9 +1,58 @@ using NLua; using MP.MONO.DECODER; +using MP.MONO.Data; +using MP.MONO.Core; +using StackExchange.Redis; +using Microsoft.Extensions.Configuration; +using Newtonsoft.Json; +using MP.MONO.Core.DTO; // See https://aka.ms/new-console-template for more information Console.WriteLine("Start DECODER with LUA integration!"); +// init parte config, vedere https://blog.hildenco.com/2020/05/configuration-in-net-core-console.html +var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); +var builder = new ConfigurationBuilder() + .AddJsonFile($"appsettings.json", true, true) + .AddJsonFile($"appsettings.{env}.json", true, true) + .AddEnvironmentVariables(); +var config = builder.Build(); + +// init oggetti messagePipe... +ConnectionMultiplexer redisConn = ConnectionMultiplexer.Connect(config.GetConnectionString("Redis")); + +MessagePipe alarmPipe = new MessagePipe(redisConn, Constants.ALARM_M_QUEUE); +MessagePipe alarmValPipe = new MessagePipe(redisConn, Constants.ALARM_ACT_VAL); + +alarmValPipe.EA_NewMessage += AlarmValPipe_EA_NewMessage; + +void AlarmValPipe_EA_NewMessage(object? sender, EventArgs e) +{ + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + var alarmList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (alarmList != null) + { + // per ogni valore (è una lista di INT, iuno x bank) devo fare la verifica... + + //var ListRecords = new List(); + //ListRecords = alarmList.Select(x => new DisplayDataDTO() + //{ + // IsNumeric = false, + // Title = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}", + // Value = x, + // Order = ListRecords == null ? 0 : ListRecords.Count + //}).ToList(); + } + } + catch + { } + } +} Lua state; state = new Lua(); @@ -118,6 +167,11 @@ if (numTest == 1) // Console.WriteLine(item); //} + do + { + Thread.Sleep(5000); + } while (true); + } else if (numTest == 2) { diff --git a/MP.MONO.DECODER/appsettings.json b/MP.MONO.DECODER/appsettings.json new file mode 100644 index 0000000..6a7c459 --- /dev/null +++ b/MP.MONO.DECODER/appsettings.json @@ -0,0 +1,34 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "ConnectionStrings": { + "Redis": "nkcredis.steamware.net:6379,DefaultDatabase=7,connectTimeout=5000,syncTimeout=5000,asyncTimeout=5000,abortConnect=false,ssl=false,password=nkc.password", + "AuthConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;", + "DefaultConnection": "Server=localhost;port=3306;database=MAPO.MONO;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;", + "AdminConnection": "Server=localhost;port=3306;database=MAPO.MONO;user=root;pwd=Egalware_24068!;sslmode=None;", + "MP.MONO.Data": "Server=localhost;port=3306;database=MAPO.MONO;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;" + }, + "DbConfig": { + "Server": "localhost", + "nKey": "MONO", + "sKey": "M3T@n0-CH4" + }, + "maxRecord": 15, + "ExternalProviders": { + "MailKit": { + "SMTP": { + "Address": "smtp.gmail.com", + "Port": "465", + "Account": "steamwarebot@gmail.com", + "Password": "drmfsls16", + "SenderEmail": "steamwarebot@gmail.com", + "SenderName": "Steamware Email BOT" + } + } + } +} diff --git a/MP.MONO.Data/MapoMonoContext.cs b/MP.MONO.Data/MapoMonoContext.cs index 8f680ec..bbd583c 100644 --- a/MP.MONO.Data/MapoMonoContext.cs +++ b/MP.MONO.Data/MapoMonoContext.cs @@ -24,11 +24,12 @@ namespace MP.MONO.Data { _configuration = configuration; } -#if false - public MapoMonoContext() { } + +#if false + public MapoMonoContext(DbContextOptions options) : base(options) { try diff --git a/MP.MONO.SIM/Program.cs b/MP.MONO.SIM/Program.cs index 490b923..62d1a72 100644 --- a/MP.MONO.SIM/Program.cs +++ b/MP.MONO.SIM/Program.cs @@ -43,7 +43,7 @@ IDatabase? redisDb = redis.GetDatabase(); setupConf(); var currSimGen = new Simulator(confPath, modeList.Count, statusList.Count); -//preparo la lista dei contatori invio... +// preparo la lista dei contatori invio... LogSimulator.Add(Constants.ACT_LOG_M_QUEUE, 0); LogSimulator.Add(Constants.ALARM_M_QUEUE, 0); LogSimulator.Add(Constants.EVENT_LOG_M_QUEUE, 0); @@ -221,11 +221,13 @@ void simAlarms() do { + List currAlarmsVal = new List(); List activeAlarms = new List(); //int alarmCode = rand.Next(0, 255); int alarmCode = rand.Next(0, 160); // se >= 128 --> 0 (no alarm) alarmCode = alarmCode <= 127 ? alarmCode : 0; + currAlarmsVal.Add(alarmCode); for (int i = 0; i < 8; i++) { if ((alarmCode & (1 << i)) != 0) @@ -233,9 +235,11 @@ void simAlarms() activeAlarms.Add($"Alarm {i:000}"); } } + string rawDataVal = JsonConvert.SerializeObject(currAlarmsVal); string rawData = JsonConvert.SerializeObject(activeAlarms); - // decodifico allarme e lo trasformo in List di allarmi attivi... + // decodifico allarme e lo trasformo in List + List di allarmi attivi... saveAndSendMessage(Constants.ALARM_CURR_KEY, rawData, Constants.ALARM_M_QUEUE, rawData); + saveAndSendMessage(Constants.ALARM_ACT_KEY, rawDataVal, Constants.ALARM_ACT_VAL, rawDataVal); // attesa random Thread.Sleep(rand.Next(minPeriod, maxPeriod)); } while (true);