Fluxo web (Painel Web) — Visão clara e contextual
Esta página descreve o que o Painel Web faz, quais telas existem, e fornece fluxos operacionais e de troubleshooting. O objetivo é separar responsabilidades do Web UI (o que o usuário opera) e ações do backend/middleware.
Sumário rápido:
- O Painel Web é a interface operacional (login, gerenciamento de leitores, modos, actions e simulador de APIs).
- O Middleware backend recebe sockets dos leitores (DA-APP), aplica regras, persiste em SQLite e envia events para endpoints configurados.
Objetivo deste documento
Deixar claro o que acontece no Web UI, descrever as telas principais e fornecer fluxos práticos para:
- teste sem hardware (simulador);
- criar e validar actions;
- configurar modos de leitura (manual, por GPI, contínuo);
- checagem rápida em campo (checklist).
Tela: Login
Rota: /login

Contexto (o que é no web): formulário de autenticação. Após login bem-sucedido o front salva authToken e redireciona para /leitores.
Pontos importantes:
- validação de credenciais no backend (
POST /login); - feedback visual (loading, erro);
- suporte a "lembrar usuário" no
localStorage.
Tela: Lista de leitores / Leitor selecionado
Rota: /leitores

Contexto (o que é no web): lista os leitores conhecidos (reais e simuladores). Ao selecionar um leitor, o painel mostra:
- cartões de status (Radio, Leituras, Modo salvo, Tempo restante);
- configuração de leitura (antenas, intervalos, GPI/GPO, filtros);
- painel de leituras em tempo real.
O Web UI consome GET /leitores para preencher a lista e GET /leitores/:id/status/GET /leitores/:id/reads para info dinâmica.
Modal: Adicionar leitor simulador

Contexto (o que é no web): modal para criar leitores virtuais — útil para demonstrações e homologação sem hardware.
Campos/ações:
- nome do leitor, número de antenas;
- estado inicial das GPIs;
- importar
CSV(formatoantena,epc); - ao criar, o leitor aparece na lista como
simuladore pode iniciar leituras.
Uso rápido:
- Abra "Adicionar leitor simulador".
- Cole ou importe o CSV com EPCs.
- Criar leitor simulador → selecione e inicie leitura.
Configuração de leitura e status (antenas / GPI / GPO)

Contexto (o que é no web): painel onde o operador define modos, antenas ativas, potências, filtros, comportamento de GPI/GPO e parâmetros de debounce/duração.
Modos suportados (UI):
- Start/Stop manual — controle direto pelo operador;
- Start manual + stop por tempo — inicia manualmente, para automaticamente;
- Start por GPI + stop por tempo — sensor inicia, tempo encerra;
- Start por GPI + stop por GPI — dois sinais controlam janela;
- Contínuo — leituras e envio periódicos.
Campos chave:
- Antenas: habilitar/desabilitar e potencia;
- Intervalo EPC: tempo entre leituras repetidas;
- Filtros: prefixo/sufixo e RSSI minimo;
- GPI: porta, sinal (HIGH/LOW), debounce (ms);
- GPO: ações durante/apos envio.
Cadastro de Actions (construção de body)

Contexto (o que é no web): CRUD para saídas configuráveis — cada action define método, URL, headers, autenticação, filtros por antena e corpo (body) a ser enviado.
Notas práticas:
- Use o construtor de body para testar formatos (uma tag por linha no preview);
- Cadeia de actions: permita dependência entre actions (executar somente se anterior OK);
- Configure GPOs de sucesso/erro como resposta a execução da action.
Simulador visual de APIs

Rota: /simulador-apis
Contexto (o que é no web): recebe chamadas geradas por actions (ou por envio manual) e mostra bodies, headers e respostas simuladas — ideal para validar integrações antes de apontar para APIs reais.
Uso:
- Execute uma action apontando para o simulador para verificar o JSON final e headers;
- Simule status differentes para testar comportamentos de erro.
Fluxos comuns (passo-a-passo)
- Homologação sem hardware (rápido):
- Criar leitor simulador (modal) → importar CSV;
- Selecionar leitor e aplicar modo desejado;
- Criar action apontando para
/simulador-apise testar; - Verificar bodies no simulador de APIs.
- Teste de GPI start/stop:
- Configure modo "Start por GPI e stop por tempo" no painel;
- Ajuste porta/sinal/debounce; salve;
- No simulador, altere GPI para HIGH/LOW e observe início/parada de leitura.
- Validação de Actions em cadeia:
- Criar Action A (POST) e Action B (executa somente se A OK);
- Use simulador para forçar status 200/500 e ver resposta de cada etapa.
Troubleshooting rápido (Web UI)
- MDX/image not found: confirme que a imagem está em
static/img/pages/middleware-rfid/e o nome NÃO contém acentos inesperados. - Front não carrega: verifique
consoledo navegador para erros JS enetworkpara chamadas que retornam 4xx/5xx. - Leitor não aparece: confirme DA-APP conecta ao middleware via
HIOT_TCP_PORTe o backend lista leitores. - Actions não disparam: verifique logs do middleware e o simulador de APIs para receber o pedido.
Checklist rápido antes de validar em campo
- Painel acessível em
http://IP_DO_SERVIDOR:PORT; - Login funcional (credenciais padrão ou definidas);
- DA-APP conectado ao
HIOT_TCP_PORTe leitor aparece na lista; - Status de antenas, GPI/GPO visíveis no painel;
- Start/Stop e modos temporizados funcionam;
- Action recebe body no
/simulador-apise GPOs reagem conforme configurado.
Se quiser, eu posso:
- executar localmente
npm run build/npm starte trazer os logs do servidor (se autorizar), ou - varrer o diretório
static/img/pages/middleware-rfidpara garantir que os nomes das imagens batem exatamente com as referências.