Skip to content
  • Categorias
  • Recente
  • Tags
  • Popular
  • Usuários
  • Grupos
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Brite)
  • No Skin
Collapse

Automatize Fórum

  1. Home
  2. Sistemas da Automatize
  3. Manual de configuração AutoChef - Totem Pesagem

Manual de configuração AutoChef - Totem Pesagem

Agendado Fixado Trancado Movido Sistemas da Automatize
1 Posts 1 Posters 11 Visualizações 1 Watching
  • Mais Antigo para Mais Recente
  • Mais Recente para Mais Antigo
  • Mais Votados
Responder
  • Responder como tópico
Entre para responder
Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
  • cassolC
    cassolC
    cassol
    Global Moderator
    escreveu em última edição por
    #1

    Referência Completa — config.json

    Este documento descreve todos os campos do arquivo config.json, seus valores padrão, valores válidos e o impacto de cada configuração no sistema.

    Comportamento automático de atualização: ao iniciar, o sistema verifica se existem campos ausentes no config.json e os preenche automaticamente com os valores padrão, sem sobrescrever valores já existentes.


    Estrutura Geral

    {
      "serilog":     { ... },   // Configuração de logging
      "bancoDeDados": { ... },  // Conexão com SQL Server
      "comanda":     { ... },   // Comportamento do ciclo de pesagem
      "impressora":  { ... },   // Configuração da impressora de comandas
      "balancas":    [ ... ],   // Lista de balanças (uma ou mais)
      "ui":          { ... }    // Temas visuais da interface
    }
    

    serilog — Logging

    Controla o que é registrado em log, onde e com qual nível de detalhe.

    "serilog": {
      // Nível mínimo de log registrado.
      // Valores válidos (do mais detalhado ao menos): Verbose | Debug | Information | Warning | Error | Fatal
      // Padrão: "Information"
      "minimumLevel": "Debug",
    
      // Enriquecedores que adicionam informações automáticas a cada log.
      // Valores suportados: "FromLogContext", "WithMachineName", "WithThreadId"
      "enrich": [
        "FromLogContext",
        "WithMachineName",
        "WithThreadId"
      ],
    
      // Destinos de saída do log. Pode conter múltiplos destinos.
      "writeTo": [
        {
          // Console: exibe os logs no terminal
          "name": "Console",
          "args": {
            // Template de formatação da mensagem no console
            "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] [{MachineName}] [{ThreadId}] {Message:lj}{NewLine}{Exception}"
          }
        },
        {
          // File: persiste os logs em arquivo rotativo por dia
          "name": "File",
          "args": {
            // Caminho do arquivo de log
            "path": "logs/servico-pesagem.txt",
    
            // Rotação automática do arquivo. Valores: Infinite | Year | Month | Day | Hour | Minute
            // Padrão: "Day"
            "rollingInterval": "Day",
    
            // Quantidade de arquivos antigos mantidos. Null = sem limite.
            // Padrão: 7
            "retainedFileCountLimit": 7,
    
            // Template de formatação da mensagem no arquivo
            "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] [{MachineName}] [{ThreadId}] {Message:lj}{NewLine}{Exception}"
          }
        }
      ]
    }
    

    bancoDeDados — Banco de Dados

    Conexão com o SQL Server onde as comandas são registradas.

    "bancoDeDados": {
      // ID da empresa no banco de dados.
      // Padrão: 1
      "idEmpresa": 1,
    
      // String de conexão ADO.NET para SQL Server.
      // Inclua TrustServerCertificate=True para ambientes sem certificado SSL.
      "connectionString": "Server=192.168.1.10,1433;Database=AutomatizeDB;User Id=sa;Password=senha;TrustServerCertificate=True;"
    }
    

    comanda — Ciclo de Pesagem

    Controla como as comandas são geradas e o fluxo do ciclo de atendimento.

    "comanda": {
      // Define se a comanda é gerada automaticamente pelo sistema (true)
      // ou informada manualmente/por leitor (false).
      // Padrão: true
      "auto": true,
    
      // Status inicial com que a comanda é aberta no banco de dados.
      //   0 = Aberta  →  produto é adicionado normalmente
      //   1 = Fechada →  comanda criada como fechada
      //   2 = Cancelada → comanda criada sem adicionar produto (pesagem livre)
      // Padrão: 0
      "statusInicial": 0,
    
      // Define qual evento é esperado primeiro quando auto = false.
      //   0 = PesoPrimeiro    → o prato é colocado, depois a comanda é lida
      //   1 = ComandaPrimeiro → a comanda é lida, depois o prato é colocado
      // Ignorado quando auto = true.
      // Padrão: 1
      "ordem": 1,
    
      // Número inicial do intervalo de comandas geradas/aceitas.
      // Padrão: 1000
      "inicio": 1000,
    
      // Número final do intervalo de comandas geradas/aceitas.
      // Padrão: 9999
      "fim": 9999,
    
      // Número da próxima comanda a ser emitida (modo auto).
      // Ao atingir "fim", reinicia em "inicio" automaticamente.
      // Padrão: 1000
      "atual": 1000,
    
      // Se true, rejeita o número da comanda se ele estiver fora do intervalo [inicio, fim].
      // Padrão: false
      "validaLimites": false,
    
      // Se true, impede que a mesma comanda seja emitida duas vezes em sequência.
      // Padrão: false
      "evitarRepetidas": false,
    
      // Tempo em segundos que o sistema aguarda a leitura da comanda após o peso
      // ter sido registrado (somente no modo ordem = PesoPrimeiro).
      // Ao expirar, o ciclo é cancelado e reiniciado.
      // Padrão: 30
      "tempoAguardandoComanda": 30
    }
    

    impressora — Impressora de Comandas

    Configuração da impressora térmica que emite a comanda física.

    "impressora": {
      // Habilita ou desabilita a impressão. Se false, o ciclo funciona sem imprimir.
      // Padrão: false
      "imprimir": true,
    
      // Ativa o modo de debug da impressora. Ao invés de enviar para a impressora física
      // via ACBr, grava a saída em logs/impressao-debug.txt.
      // Útil para testes sem hardware real.
      // Padrão: false
      "debug": false,
    
      // Nome do arquivo de template da comanda, localizado na pasta Templates/.
      // Padrão: "template_padrao.txt"
      "templateImpressao": "template_padrao.txt",
    
      // Nome da impressora conforme cadastrado no sistema operacional ou RAW:<nome>.
      // Padrão: "Impressora Padrão"
      "nomeImpressora": "Impressora de Comanda",
    
      // Modelo/protocolo da impressora. Deve corresponder a um valor do enum ACBrPosPrinterModelo.
      // Exemplos: "ppEscPosEpson", "ppEscPosBematech", "ppPosPrinter"
      // Padrão: "ppEscPosEpson"
      "modelo": "ppEscPosEpson",
    
      // Porta de comunicação. Exemplos: "COM1", "USB:NomeImpressora", "RAW:NomeImpressora"
      // Padrão: "COM1"
      "porta": "RAW:BALANCA",
    
      // Largura do papel em mm. Padrão: 80
      "largura": 80,
    
      // Altura máxima da área de impressão em mm. Padrão: 200
      "altura": 200
    }
    

    balancas — Lista de Balanças

    Array com uma ou mais balanças. Cada item configura uma balança independente. Os nomes devem ser únicos.

    "balancas": [
      {
        // Nome identificador da balança (deve ser único entre todas as balanças).
        "nome": "Buffet Principal",
    
        // Modelo da balança, correspondente ao enum ACBrBALModelo da biblioteca ACBr.
        // Exemplos: "balFilizola", "balToledo", "balDimep", "simulada"
        // Use "simulada" para testes sem hardware físico.
        "modelo": "balFilizola",
    
        // Porta serial. Exemplos: "COM1", "COM8"
        "porta": "COM8",
    
        // ── Parâmetros de comunicação serial ──────────────────────────────────────
    
        // Taxa de transmissão em bps. Valores válidos: 110 | 300 | 600 | 1200 | 2400 |
        // 4800 | 9600 | 14400 | 19200 | 38400 | 57600 | 115200
        // Consulte o manual da balança. Padrão mais comum: 9600
        "baud": 9600,
    
        // Bits de dados por símbolo. Valores válidos: 5 | 6 | 7 | 8. Padrão: 8
        "dataBits": 8,
    
        // Paridade de erro. Valores válidos: "None" | "Odd" | "Even" | "Mark" | "Space"
        // Padrão: "None"
        "parity": "None",
    
        // Bits de parada. Valores válidos: 0 (1 bit) | 1 (1.5 bits) | 2 (2 bits). Padrão: 0
        "stopBits": 0,
    
        // Controle de fluxo por hardware.
        // 0 = Nenhum | 1 = XON/XOFF | 2 = RTS/CTS | 3 = DTR/DSR. Padrão: 0
        "handShake": 0,
    
        // Parâmetros avançados de comunicação (normalmente não precisam ser alterados)
        "maxBandwidth": 100,
        "sendBytesCount": 1,
        "sendBytesInterval": 100,
        "softFlow": false,
        "hardFlow": false,
    
        // Posição inicial e final do dado de peso na resposta da balança (protocolo raw).
        // 0 = usa o protocolo padrão do modelo ACBr. Padrão: 0
        "posIni": 0,
        "posFim": 0,
    
        // ── Parâmetros de estabilidade e leitura ─────────────────────────────────
    
        // Intervalo em ms entre cada chamada de leitura no loop interno.
        // Valores menores = leituras mais frequentes, maior uso de CPU.
        // Padrão: 200
        "Intervalo": 200,
    
        // Número de leituras consecutivas com o mesmo valor necessárias para
        // considerar o peso estabilizado e emitir o evento.
        // Aumente para balanças que oscilam muito mecanicamente.
        // Padrão: 3 | Mín: 1 | Máx: 20
        "leiturasParaEstabilizar": 3,
    
        // Passo de quantização em kg usado para comparar estabilidade entre leituras.
        // Leituras com diferença menor que este valor são tratadas como iguais.
        // Balanças de alta resolução (1g) podem usar 0.002; balanças de 5g usam 0.005.
        // Padrão: 0.005 | Mín: 0.001 | Máx: 1.000
        "passoQuantizacaoKg": 0.005,
    
        // Timeout em ms de cada chamada LePeso() à biblioteca ACBr.
        // Balanças seriais lentas (9600 baud) podem precisar de 1000ms.
        // Balanças rápidas (USB/RS-422) podem usar 300ms.
        // Padrão: 1000 | Mín: 100 | Máx: 5000
        "timeoutLePesoMs": 1000,
    
        // Tempo máximo em ms de instabilidade antes de o detector de estabilidade
        // ser resetado automaticamente. Evita que o sistema trave se a balança
        // nunca estabilizar (ex: objeto em balanço).
        // Padrão: 10000 | Mín: 1000 | Máx: 60000
        "janelaMaxSemEstabilizarMs": 10000,
    
        // Se true, ignora uma nova pesagem com o mesmo peso da pesagem anterior.
        // Útil para evitar duplo lançamento se o cliente deixar o prato por mais tempo.
        // Padrão: false
        "evitarPesosRepetidos": false,
    
        // ── Tara e Produto ────────────────────────────────────────────────────────
    
        // Tara em kg a ser subtraída de cada leitura. 0 = sem tara.
        // Exemplo: 0.120 desconta 120g do peso bruto (peso do prato).
        // Padrão: 0
        "tara": 0.120,
    
        // Produto vinculado a esta balança.
        // O código é usado para consultar preço e nome no banco de dados.
        "produto": {
          // Código do produto no banco de dados.
          "codigo": "112",
    
          // Nome exibido na tela (pode ser sobrescrito pelo banco de dados).
          "nome": "Buffet Kg",
    
          // Unidade de medida exibida. Exemplos: "kg", "g", "un"
          "unidade": "kg",
    
          // Preço por kg. Sobrescrito automaticamente pelo banco de dados ao iniciar.
          "preco": 59.90
        }
      }
    ]
    

    Referência rápida de tunagem por modelo de balança

    Modelo timeoutLePesoMs leiturasParaEstabilizar passoQuantizacaoKg Intervalo
    Filizola DP-30 / MF (RS-232 9600) 1000 3 0.005 200
    Toledo Prix 3 (RS-232 9600) 800 2 0.005 200
    Toledo Prix 3 (RS-232 19200) 400 2 0.005 150
    Dimep S-550 (RS-232) 600 3 0.002 200
    Elgin DP-30 (RS-232 9600) 1000 3 0.005 200
    Qualquer modelo (USB/RS-422 rápido) 200 2 0.005 100
    Simulada (para testes) — — — —

    ui — Interface do Usuário

    Define o tema visual ativo e os temas disponíveis.

    "ui": {
      // Nome do tema ativo. Deve ser uma das chaves de "temasDisponiveis".
      // Padrão: "azul-moderno"
      "tema": "azul-moderno",
    
      // Mapa de temas disponíveis. Cada tema define as cores da interface.
      "temasDisponiveis": {
        "nome-do-tema": {
          // Cor de fundo da página principal
          "fundo": "#e3f2fd",
    
          // Cor de fundo do topo/cabeçalho
          "topo": "#0d47a1",
    
          // Cor de destaque (elementos em evidência)
          "destaque": "#64b5f6",
    
          // Cor do texto no topo
          "texto-topo": "#ffffff",
    
          // Cor de fundo do painel de valor
          "valor": "#1976d2",
    
          // Cor do texto no painel de valor
          "valorTexto": "#ffffff",
    
          // Cor do label acima do valor
          "valorLabel": "#bbdefb",
    
          // Cor de fundo do valor quando em destaque (ex: peso confirmado)
          "valorDestaque": "#64b5f6",
    
          // Cor do texto do valor em destaque
          "valorTextoDestaque": "#0d47a1",
    
          // Cor de fundo de painéis de informação secundária
          "info": "#90caf9",
    
          // Cor de fundo do rodapé
          "rodapeFundo": "#0d47a1",
    
          // Cor do texto no rodapé
          "rodapeTexto": "#ffffff",
    
          // Cor de fundo da área do logo
          "logoFundo": "#ffffff",
    
          // Cor do texto/ícone do logo
          "logoTexto": "#0d47a1",
    
          // Cor base do spinner de carregamento (anel externo)
          "spinnerBase": "#90caf9",
    
          // Cor do topo do spinner (anel ativo)
          "spinnerTopo": "#1565c0",
    
          // Cor do texto dentro do spinner
          "spinnerTexto": "#1565c0",
    
          // Cores de fundo dos banners de mensagem por tipo
          "mensagem": {
            "erro":           "#d32f2f",  // Erro crítico
            "acao-requerida": "#f57c00",  // Ação necessária do operador
            "alerta":         "#fdd835",  // Aviso não crítico
            "sucesso":        "#2e7d32",  // Operação concluída com sucesso
            "info":           "#0288d1",  // Informação neutra
            "neutra":         "#90a4ae"   // Mensagem sem classificação
          },
    
          // Cores do texto dos banners de mensagem (devem contrastar com "mensagem")
          "mensagemTexto": {
            "erro":           "#ffffff",
            "acao-requerida": "#ffffff",
            "alerta":         "#000000",
            "sucesso":        "#ffffff",
            "info":           "#ffffff",
            "neutra":         "#000000"
          }
        }
      }
    }
    

    Temas pré-configurados

    Chave Descrição
    azul-moderno Tema padrão. Azul claro com acentos em azul escuro.
    verde-classico Verde escuro, ideal para ambientes externos.
    amarelo-gourmet Tons dourados, indicado para ambientes gastronômicos.
    vermelho-rustico Tons avermelhados, visual rústico/artesanal.
    escuro-elegante Tema escuro com destaque em âmbar, reduz brilho em ambientes noturnos.

    Exemplo completo mínimo

    Configuração funcional com o menor número de campos necessários (demais campos usam os padrões):

    {
      "serilog": {
        "minimumLevel": "Information",
        "writeTo": [
          { "name": "Console" }
        ]
      },
      "bancoDeDados": {
        "idEmpresa": 1,
        "connectionString": "Server=localhost;Database=Petiskos;User Id=sa;Password=senha;TrustServerCertificate=True;"
      },
      "comanda": {
        "auto": true,
        "ordem": 0
      },
      "impressora": {
        "imprimir": false
      },
      "balancas": [
        {
          "nome": "Balanca 1",
          "modelo": "simulada",
          "porta": "COM1",
          "baud": 9600,
          "dataBits": 8,
          "parity": "None",
          "stopBits": 0,
          "handShake": 0,
          "produto": {
            "codigo": "001",
            "nome": "Produto",
            "unidade": "kg"
          }
        }
      ]
    }
    

    Notas importantes

    • Múltiplas balanças: adicione quantos objetos quiser no array balancas. Cada uma deve ter um nome único e pode ter parâmetros de estabilidade diferentes.
    • Balança simulada: use "modelo": "simulada" para rodar o sistema sem hardware físico. Ignora todos os parâmetros seriais.
    • Tara: o valor de tara é subtraído antes de qualquer processamento de peso no LeitorDePeso. Configure com o peso real do recipiente vazio.
    • Atualização automática: campos novos adicionados em versões futuras do sistema serão inseridos automaticamente no config.json com seus valores padrão na próxima inicialização.
    1 Resposta Última resposta
    0

    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

    With your input, this post could be even better 💗

    Cadastrar Login
    Responder
    • Responder como tópico
    Entre para responder
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados


    • Login

    • Não tem uma conta? Cadastrar

    • Login or register to search.
    • Primeiro post
      Último post
    0
    • Categorias
    • Recente
    • Tags
    • Popular
    • Usuários
    • Grupos