Hackathon BEM — API Sandbox

Acesso controlado aos dados de sensores no InfluxDB, sem expor o token. Os sensores são organizados em grupos (ex.: uma linha de extrusão) e os campos vêm renomeados para chaves claras (ex.: corrente_fase_a, temperatura). Algumas grandezas já saem com escala aplicada (temperatura ÷10, fator de potência ÷1000, frequência ÷100); as demais grandezas elétricas seguem como o medidor entrega.

Tipos: energia temperatura porta.

Ideias por tema

Pontos de partida para o Pitch de Ideias — use os dados de energia, temperatura, porta e saúde dos sensores. São só fagulhas; a dor real e a solução são de vocês.

Eficiência Energética
  • Ranking de consumo (kWh) por equipamento/linha.
  • Alerta de baixo fator de potência (custo com reativo).
  • Consumo fora do horário produtivo.
Manutenção Preditiva
  • Desequilíbrio de corrente entre fases de um motor.
  • Temperatura subindo em compressor antes de falhar.
  • Assinatura elétrica anômala (picos/quedas).
Controle de Produção
  • Estado da máquina (ligada/ociosa/parada) pela potência.
  • Tempo em operação por turno (base de OEE).
  • Impacto da abertura de porta no consumo da câmara.
Conectividade
  • Painel de saúde dos sensores (sinal WiFi, uptime).
  • Alerta quando um sensor para de enviar dados.
  • Detecção de lacunas/atrasos na telemetria.

Repositório & documentação

Cada time deve manter o projeto no GitHub. A banca (em especial o Tech Lead) avalia qualidade de código, arquitetura e a evolução ao longo do evento — então versione e documente desde o começo.

  • Criem um repositório no GitHub para o projeto do time.
  • Façam commits frequentes durante as 54h — a evolução conta.
  • Escrevam um README com: a dor/problema, a ideia/solução, os dados e sensores usados, como rodar e as principais decisões técnicas.
  • Incluam instruções de setup e um .env.examplesem segredos (chaves/tokens ficam fora do repositório).
  • No Pitch Final, compartilhem o link do repositório.

Autenticação

Envie sua API key no header X-API-Key (uma por time). A listagem de grupos/sensores é pública; a consulta de dados não.

curl -H "X-API-Key: SUA_CHAVE" \
  ".../api/v1/data?sensor=extrusora_motor"

Health

público
GET/health

Status do serviço e se está em modo demo.

Listar grupos

público
GET/api/v1/groups

Lista os grupos e, dentro de cada um, os sensores que pertencem a ele (com seus campos).

curl .../api/v1/groups

Listar sensores

público
GET/api/v1/sensors

Lista grupos e sensores. Filtre por type e/ou group. Cada sensor traz seus campos amigáveis.

curl .../api/v1/sensors
curl ".../api/v1/sensors?type=energia"
curl ".../api/v1/sensors?group=extrusao"

Consultar leituras

requer X-API-Key
GET/api/v1/data

Cada leitura vira um objeto com os campos renomeados do sensor (energia já com FP escalado; temperatura em °C).

Estratégia recomendada: baixe períodos longos de dados e processe na sua máquina — a sandbox é fonte de dados, não dashboard em tempo real. O intervalo máximo por requisição é de 168h (7 dias): para históricos maiores, itere janelas (ajustando start/stop) e junte localmente.
ParâmetroPadrãoDescrição
sensorID do sensor (ver Grupos). Obrigatório.
start-1hnow, relativo (-1h, -7d) ou RFC3339.
stopnowidem.
limit1000Máx. de leituras (teto 5000).
curl -H "X-API-Key: SUA_CHAVE" \
  ".../api/v1/data?sensor=extrusora_1&start=-30m"
{
  "sensor": "extrusora_1", "group": "extrusao", "type": "energia",
  "count": 10,
  "fields": ["corrente_fase_a", "corrente_fase_b", "corrente_fase_c",
             "tensao_fase_a", "...", "fator_potencia_a", "..."],
  "points": [
    { "time": "...", "corrente_fase_a": 128.0, "tensao_fase_a": 119.0,
       "fator_potencia_a": 0.697, ... }
  ]
}

Testar a API

Chame qualquer endpoint daqui. Apenas /data exige API key — os demais são públicos. A key fica salva só no seu navegador.

— a resposta aparece aqui —

Grupos & sensores

Conjuntos práticos de sensores. Use o id em /api/v1/data?sensor=.

Grupoid (sensor)TipoNomeCampos
Linha de Extrusão
Três medidores de energia da linha de extrusão.
extrusora_1energiaExtrusora 19 campos
extrusora_2energiaExtrusora 29 campos
extrusora_3energiaExtrusora 39 campos
Câmara de Congelados
Compressor de refrigeração + temperatura interna.
congelados_compressorenergiaCompressor de Refrigeração9 campos
congelados_temperaturatemperaturaTemperatura Interna1 campos
Câmara Fria Estoque
Dois motores de compressor + temperatura interna + abertura de porta.
estoque_compressor_1energiaMotor do Compressor 19 campos
estoque_compressor_2energiaMotor do Compressor 29 campos
estoque_temperaturatemperaturaTemperatura Interna da Câmara1 campos
estoque_portaportaAbertura de Porta1 campos
Câmara Graxaria
Energia, temperatura e abertura de porta da graxaria.
graxaria_energiaenergiaEnergia histórico9 campos
graxaria_temperaturatemperaturaTemperatura histórico1 campos
graxaria_portaportaAbertura de Porta histórico1 campos
Ambiente Externo Campo Grande
Temperatura ambiente — Campo Grande/MS.
externo_cg_temperaturatemperaturaTemperatura Ambiente1 campos
Ambiente Externo Três Lagoas
Temperatura ambiente — Três Lagoas/MS.
externo_tl_temperaturatemperaturaTemperatura Ambiente histórico1 campos
Sensores marcados como histórico foram desligados ou movidos de lugar — não publicam mais em tempo real. Ainda servem ao desafio: consulte janelas de datas passadas (use start/stop em RFC3339) para obter os dados históricos deles.

Campos — Energia

Medidor trifásico — expomos corrente, tensão e fator de potência por fase. A partir disso você deriva o resto: potência aparente (V×I), ativa (V×I×FP), consumo e desequilíbrio entre fases.

CampoO que é
corrente_fase_a / _b / _cCorrente RMS por fase (A).
tensao_fase_a / _b / _cTensão RMS fase-neutro por fase (V).
fator_potencia_a / _b / _cFator de potência por fase (já ÷1000; 1,00 = unitário).

Campos — Temperatura

Os sensores de temperatura expõem o campo temperatura, já em °C.

CampoO que é
temperaturaTemperatura interna/ambiente (já ÷10, °C).

Campos — Abertura de porta

A abertura de porta é exposta no campo abertura_porta. Conforme o ponto, vem de uma entrada digital (0/1) ou de um sinal do medidor. Interpretar o limiar entre aberta/fechada faz parte do desafio.

CampoO que é
abertura_portaSinal bruto usado como indicador de porta (sem escala).
O significado exato do sinal é abordado no evento — pergunte aos mentores.

Limites de proteção

Códigos de erro

CódigoSignificado
401API key ausente ou inválida.
404Sensor/tipo/grupo não existe no catálogo.
400Parâmetro inválido (intervalo/tempo).
429Rate limit excedido — faça retry com backoff.
502Falha ao consultar a fonte de dados.