Pular para o conteúdo
← projetos
DadosIoT

Telemetria de armazenagem de grãos

Leitura contínua de temperatura em câmaras frias, com alerta automático quando a carga sai da faixa segura.

Em trinta segundos

Contexto
Grão guardado fora da faixa de temperatura perde qualidade e pode levar a carga inteira. O acompanhamento por ronda manual só revela um desvio noturno na manhã seguinte.
O que foi feito
Um coletor lê a temperatura direto do controlador de cada câmara a cada poucos minutos, grava a série no Postgres, e o painel dispara alerta sozinho quando a leitura sai da faixa combinada.
O que mudou
A janela entre o desvio acontecer e alguém saber cai de horas para minutos, porque o intervalo entre leituras passou a ser de minutos e o limiar é avaliado a cada uma delas.
Até onde vale
O ganho de tempo vem da arquitetura, não de medição em campo: não há aqui contagem de desvios pegos nem tempo de resposta medido antes e depois. A demonstração roda com série sintética, que reproduz o comportamento do sistema sem publicar temperatura real de cliente.
Câmaras monitoradas
5
Intervalo entre leituras
1–5 min
Da leitura ao alerta
minutos

O problema

Grão guardado fora da faixa de temperatura perde qualidade e, no limite, leva a carga inteira junto. O acompanhamento tradicional depende de alguém passar de ronda e anotar o número, o que significa que um desvio que começa às duas da manhã só vai ser visto no café da manhã seguinte, quando o estrago já está feito.

Ronda também é amostragem esparsa: entre duas passagens não existe dado nenhum. Quando o desvio aparece na planilha, não há como saber se ele começou dez minutos antes ou seis horas antes, e essa diferença é justamente o que decide se a carga foi perdida.

A solução

O controlador de cada câmara já sabe a temperatura, só não contava para ninguém. Um coletor em Python consulta esses controladores por Modbus TCP a cada poucos minutos, lendo o registrador de temperatura direto do equipamento, sem intermediário nem software de fabricante no caminho.

Cada leitura vira uma linha no PostgreSQL, em tabela de série temporal a que só se acrescenta: câmara, instante e valor. Nada é sobrescrito, então o histórico serve tanto para o painel de agora quanto para olhar um mês atrás e entender o comportamento de uma câmara ao longo da safra.

O coletor roda numa VM interna, disparado por agendador. É deliberadamente a peça mais boba do sistema: ele lê, grava e morre. Não transforma, não decide e não guarda estado, então uma falha de rede na câmara custa uma leitura faltando, e não um pipeline entupido.

O painel é Grafana consultando o Postgres direto, sem etapa de carga no meio. Isso importa mais do que parece: como não existe refresh agendado entre o banco e a tela, o que o operador vê é o que o banco tem, e o atraso do painel é o tempo da consulta. O alerta é do próprio Grafana, avaliando o limiar a cada nova leitura e notificando quando a temperatura sai da faixa combinada com a operação.

O ganho não é o painel. É a diferença entre descobrir um desvio em minutos e descobrir na manhã seguinte.

Nota sobre os dados

Projeto conduzido em contexto profissional. Nome da empresa, localização das unidades, capacidade das câmaras e séries de temperatura reais não são publicados.

O que a demonstração mostra

O painel abaixo tem cinco câmaras ao longo de um dia. Quatro seguem o ciclo normal, que oscila de leve com a temperatura externa e com o próprio ciclo do compressor. Uma delas perde refrigeração no meio da madrugada: a curva descola, sobe em rampa e cruza o limite configurado. É esse cruzamento que o alerta pega, no intervalo de uma leitura, e não na ronda da manhã.

A série é sintética, gerada por fórmula: o comportamento é o do sistema, os números não são de nenhuma carga real.

Temperatura por câmara, ao longo de um dia

série sintética · leitura a cada 5 min
12152100h04h08h12h16h20h24hlimite 18°alerta 05:25
5 câmaras em ciclo normalCâmara 3, acima do limitealerta às 05:25 · Câmara 3 · 18,1°C
A Câmara 3 perde refrigeração às 03:00 e sobe em rampa, não em degrau: massa de grão tem inércia térmica. Ela cruza o limite às 05:25, e é esse cruzamento que o alerta pega, no intervalo de uma leitura. Numa ronda de turno, o mesmo desvio apareceria horas depois.
Ver os números da série
horaCâmara 1Câmara 2Câmara 3Câmara 4Câmara 5
00:0013,513,814,014,014,2
02:0013,714,014,014,214,4
04:0013,814,215,614,314,6
06:0014,114,518,6 ▲14,614,8
08:0014,314,721,7 ▲14,915,1
10:0014,515,017,615,015,3
12:0014,615,115,215,115,4
14:0014,514,915,015,115,3
16:0014,414,714,814,915,1
18:0014,114,414,514,514,9
20:0013,914,314,214,414,6
22:0013,613,914,014,114,4
24:0013,514,014,013,914,2

Tecnologias

  • Python
  • Modbus TCP
  • PostgreSQL
  • Grafana