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.
- Ranking de consumo (kWh) por equipamento/linha.
- Alerta de baixo fator de potência (custo com reativo).
- Consumo fora do horário produtivo.
- Desequilíbrio de corrente entre fases de um motor.
- Temperatura subindo em compressor antes de falhar.
- Assinatura elétrica anômala (picos/quedas).
- 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.
- 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.example— sem 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
Status do serviço e se está em modo demo.
Listar grupos
Lista os grupos e, dentro de cada um, os sensores que pertencem a ele (com seus campos).
curl .../api/v1/groups
Listar sensores
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
Cada leitura vira um objeto com os campos renomeados do sensor (energia já com FP escalado; temperatura em °C).
start/stop)
e junte localmente.
| Parâmetro | Padrão | Descrição |
|---|---|---|
sensor | — | ID do sensor (ver Grupos). Obrigatório. |
start | -1h | now, relativo (-1h, -7d) ou RFC3339. |
stop | now | idem. |
limit | 1000 | Má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=.
| Grupo | id (sensor) | Tipo | Nome | Campos |
|---|---|---|---|---|
| Linha de Extrusão Três medidores de energia da linha de extrusão. |
extrusora_1 | energia | Extrusora 1 | 9 campos |
extrusora_2 | energia | Extrusora 2 | 9 campos | |
extrusora_3 | energia | Extrusora 3 | 9 campos | |
| Câmara de Congelados Compressor de refrigeração + temperatura interna. |
congelados_compressor | energia | Compressor de Refrigeração | 9 campos |
congelados_temperatura | temperatura | Temperatura Interna | 1 campos | |
| Câmara Fria Estoque Dois motores de compressor + temperatura interna + abertura de porta. |
estoque_compressor_1 | energia | Motor do Compressor 1 | 9 campos |
estoque_compressor_2 | energia | Motor do Compressor 2 | 9 campos | |
estoque_temperatura | temperatura | Temperatura Interna da Câmara | 1 campos | |
estoque_porta | porta | Abertura de Porta | 1 campos | |
| Câmara Graxaria Energia, temperatura e abertura de porta da graxaria. |
graxaria_energia | energia | Energia histórico | 9 campos |
graxaria_temperatura | temperatura | Temperatura histórico | 1 campos | |
graxaria_porta | porta | Abertura de Porta histórico | 1 campos | |
| Ambiente Externo Campo Grande Temperatura ambiente — Campo Grande/MS. |
externo_cg_temperatura | temperatura | Temperatura Ambiente | 1 campos |
| Ambiente Externo Três Lagoas Temperatura ambiente — Três Lagoas/MS. |
externo_tl_temperatura | temperatura | Temperatura Ambiente histórico | 1 campos |
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.
| Campo | O que é |
|---|---|
corrente_fase_a / _b / _c | Corrente RMS por fase (A). |
tensao_fase_a / _b / _c | Tensão RMS fase-neutro por fase (V). |
fator_potencia_a / _b / _c | Fator 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.
| Campo | O que é |
|---|---|
temperatura | Temperatura 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.
| Campo | O que é |
|---|---|
abertura_porta | Sinal bruto usado como indicador de porta (sem escala). |
Limites de proteção
- Rate limit por chave:
60/minute· global:300/minute. - Intervalo máximo por requisição:
168h· máx. de leituras:5000.
Códigos de erro
| Código | Significado |
|---|---|
401 | API key ausente ou inválida. |
404 | Sensor/tipo/grupo não existe no catálogo. |
400 | Parâmetro inválido (intervalo/tempo). |
429 | Rate limit excedido — faça retry com backoff. |
502 | Falha ao consultar a fonte de dados. |