ajustes lora

This commit is contained in:
Diego Freitas 2025-07-31 08:02:13 -03:00
parent f06f0d6d89
commit 7d79848665
97 changed files with 137 additions and 250 deletions

Binary file not shown.

View File

@ -203,16 +203,18 @@ namespace AgroBase.Models
public class LoRaProtocoloTransmissaoSensoresModel
{
public double PercentualBateria { get; set; }
public double PercentualReservatorio { get; set; }
public double PressaoLinha { get; set; }
public double TemperaturaMotores { get; set; }
public double TemperaturaCampo { get; set; }
public double DistanciaPercorrida { get; set; }
public double OrientacaoCaminho { get; set; }
public double Velocidade { get; set; }
public double PercentualReservatorio { get; set; }
public double PressaoLinha { get; set; }
public double ErvasIdentificadas { get; set; }
public double TemperaturaMotores { get; set; }
public double TemperaturaCampo { get; set; }
public double HerbicidaConsumido { get; set; }
public double HerbicidaPorErva { get; set; }
public double PercentualErvasTerreno { get; set; }
}
public class LoRaProtocoloTransmissaoOperacaoModel

View File

@ -1739,6 +1739,7 @@ namespace AgroBase.Models
{
VelocidadeMedia = _DispMvd.Dados.VelocidadeMedia,
RPMMedio = _DispMvd.Dados.Modulos.Where(x => x.MovMotor.Inicializado).DefaultIfEmpty()?.Average(x => x?.MovMotor?.RPM_Roda ?? 0) ?? 0,
TemperaturaMedia = _DispMvd.Dados.Modulos.Where(x => x.MovMotor.Inicializado).DefaultIfEmpty()?.Average(x => x?.MovMotor?.Temperatura ?? 0) ?? 0,
TempoMovimentoSegs = _DispMvd.Dados.TempoEmAtividade,
DistanciaPercorridaTotal = _DispMvd.Dados.DistanciaPercorridaTotal,
DistanciaPercorridaParcial = _DispMvd.Dados.DistanciaPercorridaParcial,
@ -1951,6 +1952,7 @@ namespace AgroBase.Models
public double TempoMovimentoSegs { get; set; }
public double DistanciaPercorridaTotal { get; set; }
public double DistanciaPercorridaParcial { get; set; }
public double TemperaturaMedia { get; set; }
public DateTime TempoMovimento
{
get
@ -1969,6 +1971,7 @@ namespace AgroBase.Models
VelocidadeMedia = VelocidadeMedia,
RPMMedio = RPMMedio,
TempoMovimentoSegs = TempoMovimentoSegs,
TemperaturaMedia = TemperaturaMedia,
Dir_Status = Dir_Status,
MovEsq_Status = MovEsq_Status,
MovDir_Status = MovDir_Status,

View File

@ -139,6 +139,7 @@ namespace AgroBase.Services
Command8 = 108,
Command9 = 109,
Command10 = 110,
Command11 = 111,
}
public interface ICanMessageHandler

View File

@ -408,6 +408,7 @@ namespace AgroBase.Services
double _altitude = LoRaSerializer.DescompactarDecimal(dados, 2);
double _velocidade = LoRaSerializer.DescompactarDecimal(dados, 4);
double _orientacao = LoRaSerializer.DescompactarDecimal(dados, 6);
equipamento.Coordenadas.Orientacao = _orientacao;
equipamento.Coordenadas.Altitude = _altitude;
equipamento.Coordenadas.Velocidade = _velocidade;
@ -419,6 +420,7 @@ namespace AgroBase.Services
TiposCorrecaoGPS _fix = (TiposCorrecaoGPS)((int)dados[3]);
int _n_satelites = (int)dados[4];
double _precisao = LoRaSerializer.DescompactarDecimal(dados, 5);
equipamento.Coordenadas.Inicializado = _inicializado;
equipamento.Coordenadas.Correcao = _fix;
equipamento.Coordenadas.NSatelites = _n_satelites;
@ -455,6 +457,38 @@ namespace AgroBase.Services
equipamento.Operacao.idxRuaAtual = _idx_rua;
break;
}
case DadosLoRaParse.DadosSensores:
{
int _percentual_bateria = (int)dados[2];
int _temperatura_motores = (int)dados[3];
int _temperatura_campo = (int)dados[4];
int _distancia_percorrida = (int)dados[5];
int _velocidade = (int)dados[6];
equipamento.Sensores.PercentualBateria = _percentual_bateria;
equipamento.Sensores.TemperaturaMotores = _temperatura_motores;
equipamento.Sensores.TemperaturaCampo = _temperatura_campo;
equipamento.Sensores.DistanciaPercorrida = _distancia_percorrida;
equipamento.Sensores.Velocidade = _velocidade;
break;
}
case DadosLoRaParse.DadosPulverizador:
{
int _percentual_reservatorio = (int)dados[2];
int _pressao_linha = (int)dados[3];
int _ervas_identificadas = (int)dados[4];
int _herbicida_consumido = (int)dados[5];
int _herbicida_por_erva = (int)dados[6];
int _percentual_ervas_terreno = (int)dados[7];
equipamento.Sensores.PercentualReservatorio = _percentual_reservatorio;
equipamento.Sensores.PressaoLinha = _pressao_linha;
equipamento.Sensores.ErvasIdentificadas = _ervas_identificadas;
equipamento.Sensores.HerbicidaConsumido = _herbicida_consumido;
equipamento.Sensores.HerbicidaPorErva = _herbicida_por_erva;
equipamento.Sensores.PercentualErvasTerreno = _percentual_ervas_terreno;
break;
}
case DadosLoRaParse.DadosControle:
{

View File

@ -108,6 +108,12 @@ namespace AgroBase.Services
Variaveis.LoraService?.EnviarDadosLoRaViaCAN(dado);
}
List<byte[]> dadosSensores = LoRaSerializer.SerializeOperacao(_Sensoriamento);
foreach (var dado in dadosSensores)
{
Variaveis.LoraService?.EnviarDadosLoRaViaCAN(dado);
}
List<byte[]> dadosGps = LoRaSerializer.SerializeGPS(_Sensoriamento.Gps);
foreach (var dado in dadosGps)
{
@ -129,6 +135,8 @@ namespace AgroBase.Services
ComandoControle = (int)CanMessagePosicaoDados.Command7,
DadosControle = (int)CanMessagePosicaoDados.Command8,
DadosOperacao = (int)CanMessagePosicaoDados.Command9,
DadosSensores = (int)CanMessagePosicaoDados.Command10,
DadosPulverizador = (int)CanMessagePosicaoDados.Command11,
}
public enum LoRaCaracteresEspeciais

View File

@ -302,17 +302,43 @@ namespace AgroBase.Services
public static List<byte[]> SerializeOperacao(OperacaoSensoriamentoLogModel sensoriamento)
{
List<byte> operacao = new List<byte>();
operacao.AddRange(CanPrefix(DadosLoRaParse.DadosOperacao));
operacao.Add((byte)(sensoriamento.StatusOperacao)); // 1 byte
operacao.Add((byte)sensoriamento.Trajetoria.StatusCarro); // 1 byte
operacao.Add((byte)sensoriamento.Trajetoria.PercentualOperacao); // 1 byte
operacao.Add((byte)sensoriamento.Trajetoria.PercentualRuaAtual); // 1 byte
operacao.Add((byte)sensoriamento.Trajetoria.IdxRuaAtual); // 1 byte
List<byte> _operacao = new List<byte>();
_operacao.AddRange(CanPrefix(DadosLoRaParse.DadosOperacao));
_operacao.Add((byte)(sensoriamento.StatusOperacao)); // 1 byte
_operacao.Add((byte)sensoriamento.Trajetoria.StatusCarro); // 1 byte
_operacao.Add((byte)Convert.ToInt32(sensoriamento.Trajetoria.PercentualOperacao)); // 1 byte
_operacao.Add((byte)Convert.ToInt32(sensoriamento.Trajetoria.PercentualRuaAtual)); // 1 byte
_operacao.Add((byte)sensoriamento.Trajetoria.IdxRuaAtual); // 1 byte
return new List<byte[]>()
{
operacao.ToArray(),
_operacao.ToArray(),
};
}
public static List<byte[]> SerializeSensores(OperacaoSensoriamentoLogModel sensoriamento)
{
List<byte> _sensores = new List<byte>();
_sensores.AddRange(CanPrefix(DadosLoRaParse.DadosSensores));
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Bateria.PorcentagemBateria)); // 1 byte
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Movimentacao.TemperaturaMedia)); // 1 byte
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Movimentacao.TemperaturaMedia)); // 1 byte
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Trajetoria.AnguloCaminho)); // 1 byte
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Movimentacao.VelocidadeMedia)); // 1 byte
List<byte> _pulverizador = new List<byte>();
_pulverizador.AddRange(CanPrefix(DadosLoRaParse.DadosPulverizador));
_pulverizador.Add((byte)Convert.ToInt32(sensoriamento.Atuador.PercentualReservatorio)); // 1 byte
_pulverizador.Add((byte)Convert.ToInt32(sensoriamento.Atuador.PressaoLinha)); // 1 byte
_pulverizador.Add((byte)Convert.ToInt32(sensoriamento.Atuador.ErvasIdentificadas.Sum(x => x.Values.Sum()))); // 1 byte
_pulverizador.Add((byte)Convert.ToInt32(sensoriamento.Atuador.HerbicidaConsumido)); // 1 byte
_pulverizador.Add((byte)Convert.ToInt32(sensoriamento.Atuador.HerbicidaPorErva)); // 1 byte
_pulverizador.Add((byte)Convert.ToInt32(sensoriamento.Atuador.PercentualErvasTerreno)); // 1 byte
return new List<byte[]>()
{
_sensores.ToArray(),
_pulverizador.ToArray(),
};
}

View File

@ -183,8 +183,8 @@ namespace AgroBase.Services.Operadores
("configurado", true),
("modo", Variaveis.OperacaoEmAndamento.Modo),
("tempo_aguardar_inicio_operacao", Variaveis.OperacaoEmAndamento.TempoIniciarOperacao),
("modulos_mandatorios", Variaveis.OperacaoEmAndamento.ModulosMandatorios.Select(x => (int)x.Dispositivo).ToArray()),
("parametros_mandatorios", Variaveis.OperacaoEmAndamento.ParametrosMandatorios.Select(x => (int)x.Parametro).ToArray()),
("modulos_mandatorios", Variaveis.OperacaoEmAndamento.ModulosMandatorios.Where(x => x.Mandatorio && x.Utilizar).Select(x => (int)x.Dispositivo).ToArray()),
("parametros_mandatorios", Variaveis.OperacaoEmAndamento.ParametrosMandatorios.Where(x => x.Mandatorio && x.Utilizar).Select(x => (int)x.Parametro).ToArray()),
("Mov", new
{
percent_vel_max = _Controle.PercentualVelocidadeMax,

View File

@ -22,5 +22,5 @@
"top_topics_and_observing_domains": [ ]
} ],
"hex_encoded_hmac_key": "40F346D3248C3AFDF2BEE1FE496DBD32F7CED6E5AE98B881ABC421AA7E7B5642",
"next_scheduled_calculation_time": "13398455528649993"
"next_scheduled_calculation_time": "13398455528650013"
}

View File

@ -1,3 +1,3 @@
2025/07/30-21:33:49.609 56e4 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
2025/07/30-21:33:49.618 56e4 Recovering log #3
2025/07/30-21:33:49.621 56e4 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
2025/07/31-07:22:39.179 52d8 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
2025/07/31-07:22:39.186 52d8 Recovering log #3
2025/07/31-07:22:39.189 52d8 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log

View File

@ -1,3 +1,3 @@
2025/07/30-21:19:10.001 514 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
2025/07/30-21:19:10.034 514 Recovering log #3
2025/07/30-21:19:10.037 514 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
2025/07/30-21:33:49.609 56e4 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
2025/07/30-21:33:49.618 56e4 Recovering log #3
2025/07/30-21:33:49.621 56e4 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log

View File

@ -1 +1 @@
{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13398482057963342","port":443,"protocol_str":"quic"}],"anonymization":["DAAAAAcAAABmaWxlOi8vAA==",false,0],"network_stats":{"srtt":11735},"server":"https://tile.openstreetmap.org","supports_spdy":true}],"supports_quic":{"address":"192.168.1.10","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G","CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G","CAYSABiAgICA+P////8B":"Offline"}}}
{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13398517414548096","port":443,"protocol_str":"quic"}],"anonymization":["DAAAAAcAAABmaWxlOi8vAA==",false,0],"network_stats":{"srtt":92405},"server":"https://tile.openstreetmap.org","supports_spdy":true}],"supports_quic":{"address":"2804:d78:609:f200:301a:6f15:c737:9f2","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G","CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G","CAYSABiAgICA+P////8B":"Offline"}}}

View File

@ -1 +1 @@
{"sts":[{"expiry":1785458055.97563,"host":"bWGAftl61rqoc0YzqPncsLvQQh/iC2Bdp3ejUeGC83w=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1753922055.975635}],"version":2}
{"sts":[{"expiry":1785493412.917201,"host":"bWGAftl61rqoc0YzqPncsLvQQh/iC2Bdp3ejUeGC83w=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1753957412.917203}],"version":2}

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,3 @@
2025/07/30-21:42:34.039 5418 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
2025/07/30-21:42:34.041 5418 Recovering log #3
2025/07/30-21:42:34.045 5418 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log
2025/07/31-07:29:00.605 52d8 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
2025/07/31-07:29:00.606 52d8 Recovering log #3
2025/07/31-07:29:00.610 52d8 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log

View File

@ -1,3 +1,3 @@
2025/07/30-21:28:06.850 514 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
2025/07/30-21:28:06.855 514 Recovering log #3
2025/07/30-21:28:06.864 514 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log
2025/07/30-21:42:34.039 5418 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
2025/07/30-21:42:34.041 5418 Recovering log #3
2025/07/30-21:42:34.045 5418 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log

View File

@ -1,3 +1,4 @@
2025/07/30-21:33:49.527 1e74 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
2025/07/30-21:33:49.529 1e74 Recovering log #12
2025/07/30-21:33:49.529 1e74 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000012.log
2025/07/31-07:22:39.101 67a4 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
2025/07/31-07:22:39.103 67a4 Recovering log #7
2025/07/31-07:22:39.103 67a4 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000007.log
2025/07/31-07:22:39.104 67a4 Delete type=2 #5

View File

@ -1,3 +1,3 @@
2025/07/30-21:19:09.902 3b4c Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
2025/07/30-21:19:09.904 3b4c Recovering log #12
2025/07/30-21:19:09.904 3b4c Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000012.log
2025/07/30-21:33:49.527 1e74 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
2025/07/30-21:33:49.529 1e74 Recovering log #12
2025/07/30-21:33:49.529 1e74 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000012.log

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -44,7 +44,7 @@ def definir_comando():
"MatrizCusto": _dados_vw.get("matrizes", {}).get("custo", [[]]),
},
"RegrasAtivas": {
"matriz_custo": True,
"matriz_custo": False,
"deteccao_obstaculos": True,
},
"Equipamento": {