OK display sim parameters in HOME

This commit is contained in:
Samuele Locatelli
2022-03-07 12:06:41 +01:00
parent 4a7b75ab7c
commit bb50053fa8
9 changed files with 345 additions and 109 deletions
+50 -39
View File
@@ -2,7 +2,6 @@
using MP.MONO.Data.Controllers;
using Newtonsoft.Json;
using StackExchange.Redis;
using System.Configuration;
string lineSep = "------------------------------------------------------";
string redisConf = "127.0.0.1:6379";
@@ -22,45 +21,24 @@ ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(redisConf);
ISubscriber sub = redis.GetSubscriber();
IDatabase? redisDb = redis.GetDatabase();
// avvio tutti i thread...
Thread threadStatus = new Thread(simStatus);
Thread threadAlarms = new Thread(simAlarms);
Thread threadParams = new Thread(simParameters);
threadStatus.Start();
threadAlarms.Start();
threadParams.Start();
void simStatus()
/// <summary>
/// Hash Redis contenente i dati MP di una specifico TYPE (es StatusMacchina, StateMachineIngressi, ...)
/// </summary>
/// <param name="dataType"></param>
/// <returns></returns>
string mHash(string dataType)
{
int minPeriod = 2000;
int maxPeriod = 3000;
do {
// recupero uno stato simulato
var newStatus = simGen.MachineGetStatus();
string rawData = JsonConvert.SerializeObject(newStatus);
saveAndSendMessage(mHash("Machine:Status:Current"), rawData, "status", rawData);
// attesa random
Thread.Sleep(rand.Next(minPeriod, maxPeriod));
} while (true);
return $"MAPO-MONO:{dataType}";
}
void simAlarms()
{
int minPeriod = 1000;
int maxPeriod = 2000;
do
{
var alarmCode = rand.Next(1, 100);
saveAndSendMessage(mHash("Machine:Alarms:Current"), $"{alarmCode:000} | Allarme PLC {alarmCode}", "allarms", $"{alarmCode:000}");
// attesa random
Thread.Sleep(rand.Next(minPeriod, maxPeriod));
} while (true);
}
void saveAndSendMessage(string memKey, string value, string notifyChannel, string message)
{
@@ -73,13 +51,46 @@ void saveAndSendMessage(string memKey, string value, string notifyChannel, strin
sub.Publish(notifyChannel, message);
Console.WriteLine($"[{notifyChannel}] key: {memKey} | val: {value} | message: {message}");
}
/// <summary>
/// Hash Redis contenente i dati MP di una specifico TYPE (es StatusMacchina, StateMachineIngressi, ...)
/// </summary>
/// <param name="dataType"></param>
/// <returns></returns>
string mHash(string dataType)
void simAlarms()
{
return $"MAPO-MONO:{dataType}";
int minPeriod = 1000;
int maxPeriod = 2000;
do
{
var alarmCode = rand.Next(1, 100);
saveAndSendMessage(mHash("Machine:Alarms:Current"), $"{alarmCode:000} | Allarme PLC {alarmCode}", "allarms", $"{alarmCode:000}");
// attesa random
Thread.Sleep(rand.Next(minPeriod, maxPeriod));
} while (true);
}
void simParameters()
{
int minPeriod = 100;
int maxPeriod = 500;
do
{
var newParams = simGen.MachineGetParameters();
string rawData = JsonConvert.SerializeObject(newParams);
saveAndSendMessage(mHash("Machine:Parameters:Current"), rawData, "parameters", rawData);
// attesa random
Thread.Sleep(rand.Next(minPeriod, maxPeriod));
} while (true);
}
void simStatus()
{
int minPeriod = 2000;
int maxPeriod = 3000;
do
{
// recupero uno stato simulato
var newStatus = simGen.MachineGetStatus();
string rawData = JsonConvert.SerializeObject(newStatus);
saveAndSendMessage(mHash("Machine:Status:Current"), rawData, "status", rawData);
// attesa random
Thread.Sleep(rand.Next(minPeriod, maxPeriod));
} while (true);
}