← Todos os projetos
Automação

PaintCheck

Controle visual de embalagem pós-pintura, integrado ao ERP por automação.

Período
2025
Papel
Desenvolvimento individual
Contexto
Artefacto Indústria Metalúrgica
Stack
Python · PySide6 · Selenium · SQLite · Chrome CDP
Monitor do PaintCheck exibindo a peça e as instruções de embalagem

O problema

Depois da pintura, cada peça precisa ser embalada de um jeito específico: um tipo de embalagem e uma quantidade por KLT. Essa informação existe no ERP Technicon, atrás de uma sequência de cliques, e consultá-la significa o operador sair da linha. É uma busca repetitiva no meio de um fluxo que não deveria parar — e embalar errado custa retrabalho.

A abordagem

Eliminar a consulta em vez de acelerá-la. O código de barras que já está na Ordem de Produção carrega a OP e o código do processo. O sistema lê esse código pelo scanner que já existe na linha, consulta o ERP sozinho e coloca a resposta num monitor em tela cheia, legível a distância. O operador não interage com o sistema: ele só bipa e olha.

Decisões técnicas

  1. 01

    Separar scanner de teclado pela velocidade de digitação

    Um hook global de teclado captura tudo que é digitado na máquina. Um leitor de código de barras emite teclas com menos de 80ms entre elas; uma pessoa nunca digita assim. Esse filtro, somado à exigência do prefixo fixo 00, deixa a máquina ser usada normalmente sem disparar leituras falsas.

  2. 02

    Tampermonkey para alcançar um closure de JavaScript

    O botão "Último Registro" do Technicon vive dentro de um closure JS que o Selenium não consegue chamar. Em vez de simular cliques frágeis, um userscript intercepta o addEventListener antes do ERP carregar e expõe window.clicarUltimoRegistro(). O Selenium passa a chamar a própria função da aplicação, o que é muito mais estável que perseguir elementos na tela.

  3. 03

    Desktop com SQLite local, não aplicação web

    A linha não pode depender de rede. SQLite em modo WAL dá conta da concorrência entre a thread do ERP e a interface, e a fila com EMB e QUANT sobrevive a uma queda de energia — ao voltar, o monitor recompõe o estado sozinho.

  4. 04

    ERP em thread separada

    A consulta ao Technicon leva segundos. Rodando fora da thread de interface e conversando com ela por signals do Qt, o monitor nunca congela enquanto uma busca está em andamento — o que importa numa tela que fica exposta o tempo todo.

  5. 05

    Cor única por código de peça pela razão áurea

    Distribuir os matizes pela razão áurea gera mais de 50 cores visualmente distintas sem ninguém escolher cor nenhuma à mão. O operador passa a reconhecer a peça pela cor antes mesmo de ler o texto.