agrobot_base/AgroBase/AgroMonitor/VariaveisMonitoramento.cs

69 lines
2.7 KiB
C#
Raw Normal View History

using AgroBase.Models;
using AgroBase.Services;
2024-05-24 20:05:51 +00:00
using System;
using System.Collections.Generic;
using System.Linq;
namespace AgroMonitor
{
public class VariaveisMonitoramento
{
2024-10-04 13:11:23 +00:00
//public static LoRaService ComunicacaoLoRa = new LoRaService();
public static Dictionary<byte, LoRaProtocoloTransmissaoModel> EquipamentosConectados
{
get
{
var Equipamentos = new Dictionary<byte, LoRaProtocoloTransmissaoModel>()
{
2024-10-04 13:11:23 +00:00
{ Variaveis.ConexaoLoRa.parametros.address, new LoRaProtocoloTransmissaoModel() }
};
if (LoRaService.Iniciado)
{
2024-10-04 13:11:23 +00:00
lock (LoRaService._dadosOperacaoLock)
{
2024-10-04 13:11:23 +00:00
// Mensagens dos equipamentos conectados dentro dos ultimos 10 segundos
2024-10-04 20:08:48 +00:00
var Mensagens = LoRaService.LeituraDadosOperacao.Where(x => x.RecebidoEm.AddMilliseconds(VariaveisEquipamento.TempoEntrePingsConexao) > DateTime.Now).ToList();
2024-10-04 13:11:23 +00:00
var _equipamentos = Mensagens
.GroupBy(x => x.EnderecoCarro)
.OrderBy(x => x.Key)
2024-10-04 20:08:48 +00:00
.ToDictionary(x => x.Key, x => x.OrderByDescending(y => y.RecebidoEm).FirstOrDefault());
2024-10-04 13:11:23 +00:00
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>>()
{
2024-10-04 13:11:23 +00:00
{ Variaveis.ConexaoLoRa.parametros.address, new List<LoRaProtocoloTransmissaoModel>() }
};
if (LoRaService.Iniciado)
{
// Mensagens dos equipamentos conectados dentro dos ultimos 10 segundos
2024-10-04 20:08:48 +00:00
var Mensagens = LoRaService.LeituraDadosOperacao.Where(x => x.RecebidoEm.AddMilliseconds(VariaveisEquipamento.TempoEntrePingsConexao) > DateTime.Now).ToList();
var _equipamentos = Mensagens
.GroupBy(x => x.EnderecoCarro)
2024-10-04 20:08:48 +00:00
.ToDictionary(x => x.Key, x => x.OrderBy(y => y.RecebidoEm).ToList());
foreach (var item in _equipamentos)
{
Equipamentos.Add(item.Key, item.Value);
}
}
return Equipamentos;
}
}
2024-05-24 20:05:51 +00:00
}
}