agrobot_base/AgroBase/AgroMonitor/VariaveisMonitoramento.cs

68 lines
2.6 KiB
C#

using AgroBase.Models;
using AgroBase.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AgroMonitor
{
public class VariaveisMonitoramento
{
public static LoRaService ComunicacaoLoRa = new LoRaService();
public static Dictionary<byte, LoRaProtocoloTransmissaoModel> EquipamentosConectados
{
get
{
var Equipamentos = new Dictionary<byte, LoRaProtocoloTransmissaoModel>()
{
{ ComunicacaoLoRa.parametros.address, new LoRaProtocoloTransmissaoModel() }
};
if (LoRaService.Iniciado)
{
// Mensagens dos equipamentos conectados dentro dos ultimos 10 segundos
var Mensagens = LoRaService.LeituraDadosOperacao.Where(x => x.Momento.AddMilliseconds(VariaveisEquipamento.TempoEntrePingsConexao) < DateTime.Now).ToList();
var _equipamentos = Mensagens
.GroupBy(x => x.EnderecoCarro)
.OrderBy(x => x.Key)
.ToDictionary(x => x.Key, x => x.OrderByDescending(y => y.Momento).FirstOrDefault());
foreach (var item in _equipamentos)
{
Equipamentos.Add(item.Key, item.Value);
}
}
return Equipamentos;
}
}
public static Dictionary<byte, List<LoRaProtocoloTransmissaoModel>> EquipamentosConectadosLogs
{
get
{
var Equipamentos = new Dictionary<byte, List<LoRaProtocoloTransmissaoModel>>()
{
{ ComunicacaoLoRa.parametros.address, new List<LoRaProtocoloTransmissaoModel>() }
};
if (LoRaService.Iniciado)
{
// Mensagens dos equipamentos conectados dentro dos ultimos 10 segundos
var Mensagens = LoRaService.LeituraDadosOperacao.Where(x => x.Momento.AddMilliseconds(VariaveisEquipamento.TempoEntrePingsConexao) < DateTime.Now).ToList();
var _equipamentos = Mensagens
.GroupBy(x => x.EnderecoCarro)
.ToDictionary(x => x.Key, x => x.OrderBy(y => y.Momento).ToList());
foreach (var item in _equipamentos)
{
Equipamentos.Add(item.Key, item.Value);
}
}
return Equipamentos;
}
}
}
}