Pular para o conteúdo principal

Configuração de Status do Monitoramento

Descrição

Dentro do cadastro do monitor, os seguintes campos devem ser configuráveis:

  • Variação de Graus: Default de 0,5.
  • Pressão Mínima: Default de 2.
  • Limite de Tempo: Default de 12 minutos.

Lógica para Variação de Graus

Este campo verifica se o pivô está parado. A lógica compara a diferença de grau do dado atual com o terceiro anterior. Se a diferença for menor que a configurada por 3 vezes consecutivas, o sistema considera o pivô como parado.

Exemplo:

  • Variação de Grau: 0,5

Parado:

HoraGrauObservação
13:001,00Se a diferença de grau for menor que a configurada, considera o pivô parado.
13:051,20Neste caso, a diferença foi de 0,42, então o pivô está parado.
13:101,80
13:151,42

Movimento:

HoraGrauObservação
13:001,00A diferença de 0,8 indica que o pivô está em movimento.
13:051,20
13:101,80
13:151,42

Pressão Mínima

Condições:

  • Pressurizado: Se o "mca" (campo configurado) > 2.
  • Despressurizado: Se o "mca" (campo configurado) ≤ 2.

Limite de Tempo

Criação de uma condição para preencher os dados faltantes:

  • Caso a variação de graus entre dados consecutivos seja maior que 1 dentro do limite de tempo, o sistema deve preencher os graus faltantes.
  • Utilizar os dados da última pressão registrada para preencher pressão e calcular volume de lâmina.

Exemplo:

  • Se o intervalo registrado foi de 10:45h para 10:54h e 10:45h tinha graus 170, os graus 171 a 173 devem ser preenchidos com os mesmos dados.

Status

Os seguintes status devem ser considerados:

  • Irrigando: Ligado = Sim, Pressurizado = Sim, Movimento = Sim.
  • Desligado: Ligado = Não, Pressurizado = Não, Movimento = Não.
  • Parado com Água: Ligado = Sim, Pressurizado = Sim, Movimento = Não.
  • Movimento sem Água: Ligado = Sim, Pressurizado = Não, Movimento = Sim.

Status Desligado:

  • Quando não houver dados a partir de 12 minutos (Campo Limite de Tempo).
CondiçãoMundo IdealMundo NormalMundo que "dá pra rodar"
Ligado/DesligadoVerificação da entrada INB no centro.Verificação da entrada INA no centro.Pressurizado <= 0, Percentímetro <= 0.
PressurizadoSensor de pressão maior que 2 = Sim.Verificação na base.Não existe.
MovimentoGPS na ponta indica movimento.GPS na ponta, mas sem precisão exata.Não verifica percentual de movimento.

Calculo de lâmina pela velocidade e outros

function basic_agrupamento_de_monitor_dist($PIVO, $DE, $ATE, $HDE, $HATE, $FONTE, $DEBUG = null) {
global $PER;
global $db;
$LOCALMAP = array();

// Bloco de cálculos adicionais para Lâmina pela Velocidade e Outros
$lamina_velocidade_resultados = calculo_lamina_velocidade($PIVO, $DE, $ATE);

// Código original continua sem interferência

$OBJBALL = array();
$pivo = DAO::Pivo($PIVO);
$limite = $pivo->limite ? $pivo->limite : 12;
$eqp = $pivo->__equipamento;
$fazenda = $eqp->__fazenda;

$datalimitB = $DE;
$datalimitE = $ATE;
if ($datalimitB > somaDataAmd(date("Y-m-d"), 0, 0, -2) && $datalimitE > somaDataAmd(date("Y-m-d"), 0, 0, -6)) { // +6 dias
$HASHMAPFromRec = (1);
}

$monitoramentoTable = 'monitoramento';
if ($HASHMAPFromRec == 1)
$monitoramentoTable = 'monitoramento_rec';

$SQL = "
SELECT sum(lamina) as lamina, avg(IFNULL(pressao,0)) as pressao, ROUND(d.angulo) as angulo
FROM $monitoramentoTable d
WHERE 1 = 1
AND angulo is not null
AND d.pivo = '$PIVO'
AND (d.datahora >= '$DE $HDE' AND d.datahora <= '$ATE $HATE')
AND lamina is not null AND lamina > 0
AND status > 0 AND status < 3
GROUP BY ROUND(d.angulo)
";

$mopiv = DAO::Query($SQL)->_loadAll();

if ($mopiv->size()) {
do {
$lamina = $mopiv->lamina;
$LOCALMAP['dados_grafico'][$mopiv->rangulo] = [
'lamina' => $lamina,
'pressao' => $mopiv->pressao,
];
} while ($mopiv->next());
}

return array(
'OBJBALL' => $OBJBALL,
'FONTE' => $FONTE,
'lamina_velocidade_resultados' => $lamina_velocidade_resultados,
);
}

function calculo_lamina_velocidade($PIVO, $DE, $ATE) {
// Código específico para cálculo de lâmina pela velocidade e outros
$resultado = array();

// Exemplo de cálculo simples
$resultado['lamina_media'] = rand(10, 20); // Simula resultado
$resultado['velocidade_media'] = rand(5, 10); // Simula resultado

return $resultado;
}
?>