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:
| Hora | Grau | Observação |
|---|---|---|
| 13:00 | 1,00 | Se a diferença de grau for menor que a configurada, considera o pivô parado. |
| 13:05 | 1,20 | Neste caso, a diferença foi de 0,42, então o pivô está parado. |
| 13:10 | 1,80 | |
| 13:15 | 1,42 |
Movimento:
| Hora | Grau | Observação |
|---|---|---|
| 13:00 | 1,00 | A diferença de 0,8 indica que o pivô está em movimento. |
| 13:05 | 1,20 | |
| 13:10 | 1,80 | |
| 13:15 | 1,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ção | Mundo Ideal | Mundo Normal | Mundo que "dá pra rodar" |
|---|---|---|---|
| Ligado/Desligado | Verificação da entrada INB no centro. | Verificação da entrada INA no centro. | Pressurizado <= 0, Percentímetro <= 0. |
| Pressurizado | Sensor de pressão maior que 2 = Sim. | Verificação na base. | Não existe. |
| Movimento | GPS 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;
}
?>