Gerenciamento de Armazém por Voz em Hardware de Borda: Construção, Implantação e Resultados Medidos
Este é um auxílio ao operador, não um livro de registro de inventário certificado. A REST API não possui fila offline: solicitações enviadas durante uma falha de rede ou serviço são rejeitadas e não são reproduzidas após a recuperação.
O que esta solução faz
Um operador na doca de recebimento diz "dar entrada em 10 caixas de maçãs". O SenseCAP Watcher no rack ouve, e um registro de entrada de estoque é gravado no banco de dados do armazém em um gateway reComputer no mesmo prédio. Pergunte "quantas maçãs restam" e a resposta é falada de volta. Sem digitação, sem menus, as mãos permanecem nos produtos.
Feito para locais onde as transações acontecem longe de um teclado: docas de recebimento, corredores de racks, cabines de empilhadeiras e pequenos armazéns que nunca adotaram um WMS porque o treinamento custava mais do que economizava.
- Implementação de código aberto: github.com/suharvest/warehouse_system
- Escolhendo uma configuração e implantando: página de design de referência
A fala e o banco de dados são conectados por meio do MCP (Model Context Protocol). O sistema de armazém publica cada operação de inventário como uma ferramenta MCP, e o agente de voz no Watcher se conecta a esse endpoint como um cliente MCP. Adicionar uma ação de voz significa adicionar uma ferramenta, sem retreinamento do modelo de fala; integrar um ERP/WMS existente significa mapear sua interface de dados para o mesmo conjunto de ferramentas.

Watcher funciona assim que é montado
O SenseCAP Watcher carrega o firmware do agente de voz e de reconhecimento facial. Grave o firmware, monte-o na estação e os operadores podem registrar estoque por voz com a identidade verificada.
Os dados permanecem no local
O banco de dados do armazém é executado em um gateway reComputer no local. O Nível 3 também mantém o reconhecimento, o LLM e a síntese nas instalações e não chama nenhum serviço externo após a implantação.
Código aberto, conecta ao seu ERP/WMS
O sistema de armazém é de código aberto. Conectar um sistema existente significa mapear sua interface de dados para as mesmas ferramentas MCP, na ordem de algumas dezenas de linhas de código de mapeamento.
Novos comandos sem retreinamento
Adicionar uma ação de voz significa registrar uma ferramenta MCP. O firmware do Watcher permanece inalterado.
O que o dashboard mostra
Após uma fala, o resultado aparece no dashboard do gateway. A página de inventário lista a quantidade atual e o último movimento de cada item:

A página de transações lista cada entrada e saída de estoque com número de lote, operador e origem (voz ou REST):

A lista de operadores é mantida na página de usuários, e a verificação facial confere com ela:

De que hardware você precisa
Três funções de dispositivo. Quais você compra depende de onde os dados e a IA de voz podem ser executados.
① Terminal de voz: SenseCAP Watcher. Necessário em todos os níveis, um por estação de trabalho. Ele possui dois processadores: o ESP32 executa o agente de voz Xiaozhi (palavra de ativação, gravação, streaming, cliente MCP), e o Himax WE2 executa o firmware de reconhecimento facial para verificação do operador.
② Gateway de borda. Executa o sistema de armazém e, nos níveis auto-hospedados, também o endpoint MCP. Ele determina se o reconhecimento facial pode ser movido para o gateway e quantas estações um host pode atender.
③ Host de IA local. Necessário apenas quando o reconhecimento, o LLM e a síntese precisam permanecer todos nas instalações.
| Modelo | Função neste design | Quando escolhê-lo | |
|---|---|---|---|
![]() | SenseCAP Watcher | Terminal de voz, cliente MCP, reconhecimento facial no dispositivo | Sempre, um por estação |
![]() | reComputer R1125-10 | Gateway de borda executando o sistema de armazém | Dados de inventário permanecem no local, até 20 operadores, reconhecimento facial no Watcher |
![]() | reComputer Industrial R2135-12 | Gateway de borda com um acelerador Hailo-8 | Mais de 20 operadores, ou quando é necessária detecção de vivacidade |
![]() | reComputer J4012 | Um único equipamento executando o sistema de armazém, reconhecimento facial e um serviço de voz auto-hospedado | 2–3 estações compartilham um host |
![]() | reComputer Robotics J5011 | LLM e voz locais, sem chamadas a serviços externos | A instalação precisa permanecer offline |
O Watcher armazena no máximo 20 modelos faciais no dispositivo. Acima de 20 operadores, o reconhecimento precisa ser movido para o gateway: até 20, escolha o R1125; acima de 20, escolha o R2135 com Hailo-8.
Outros pré-requisitos: o Watcher conecta-se apenas a Wi-Fi de 2,4 GHz (um SSID somente 5 GHz não aparece na varredura de provisionamento), e o gateway deve estar na mesma LAN. A pré-verificação de implantação do Nível 3 verifica o runtime de contêiner NVIDIA e cerca de 10 GB de espaço livre em disco (modelos de fala mais arquivos do mecanismo LLM).
Limites de Seleção Negativa
- Necessidades de LLM totalmente offline: Se estiver operando em um armazém classificado ou isolado em air gap que exija interação com LLM offline, evite níveis dependentes de nuvem; selecione o Nível 3 com reComputer J4012 (Orin NX 16GB).
- Fila em caso de falha de rede: A REST API do armazém atualmente não possui uma fila offline no servidor; os clientes devem armazenar transações localmente em buffer se operarem sobre conexão sem fio intermitente.
Como implantar no local
Três etapas: montar e gravar o Watcher, iniciar os containers no gateway, conectar o caminho de voz.
Etapa 1: montar o Watcher
Monte o Watcher na doca de recebimento, no corredor de racks ou na cabine da empilhadeira, onde os operadores realmente registram a entrada e saída de estoque. Se for montado no escritório, obriga os operadores a lembrar as quantidades e caminhar até lá para inseri-las.
A gravação é feita via USB-C; o dispositivo é enumerado como uma ponte WCH USB-UART (0x1a86:0x55d2). Duas imagens de firmware, uma por processador: o agente de voz Xiaozhi vai no ESP32, o firmware de reconhecimento facial no Himax WE2.
Etapa 2: iniciar o gateway
O sistema de armazém é um serviço Docker. As etapas de implantação variam por nível; escolha uma configuração na página de design de referência e baixe o pacote de aplicativo correspondente.
A implantação pode ser executada via SSH para o gateway ou diretamente no gateway. O estoque existente pode ser importado na primeira inicialização com o modelo Excel fornecido.
Após a implantação, o dashboard fica em http://GATEWAY_IP:2125, e o health check do container é GET /health na mesma porta.
Etapa 3: conectar o caminho de voz
Trial, Tier 1 e Tier 2A usam uma URL de endpoint MCP emitida pela SenseCraft. Os níveis 2B e 3 fazem o self-host do endpoint MCP na porta 18004 e do servidor de voz na 18000 (console de administração em 18003). O nível 3 adiciona EdgeLLM em 8000 e OpenVoiceStream em 8621, e não chama nenhum serviço externo após a implantação.
Interfaces disponíveis
Duas superfícies de integração:
Endpoint MCP (porta 18004): para o lado de voz. Tudo o que o agente pode fazer é uma ferramenta neste endpoint. Estender o conjunto de comandos significa registrar outra ferramenta; o firmware do Watcher permanece inalterado. Integrar um ERP/WMS existente significa implementar a interface de dados do seu sistema contra as mesmas ferramentas, na ordem de algumas dezenas de linhas de código de mapeamento. Variações na formulação são associadas de forma aproximada ao comando registrado mais próximo em vez de serem rejeitadas.
REST API (porta 2125): para outros sistemas. Lista de inventário, histórico de transações e status do agente estão disponíveis via HTTP.
| Interface | Endpoint / porta | Payload |
|---|---|---|
| Dashboard + REST API | http://GATEWAY_IP:2125 | Lista de inventário, histórico de transações, status de conexão do agente |
| Health check | http://GATEWAY_IP:2125/health | 200 assim que o serviço de armazém estiver pronto |
| Endpoint MCP | 18004 | Operações de inventário publicadas como ferramentas MCP |
| Banco de dados de inventário | SQLite em /data/warehouse.db no volume warehouse_data | Montar ou exportar para um job externo de BI/ERP |
| Servidor de voz | WebSocket 18000, console de administração 18003 | Fluxo de áudio do Watcher (níveis 2B e 3) |
| IA on-premise | 8000 EdgeLLM (compatível com OpenAI), 8621 OpenVoiceStream | Chat completions; reconhecimento, síntese e voiceprint (nível 3) |
O acesso é limitado por função de chave de API e por tenant. Uma chave VIEW em um endpoint de escrita retorna 403; leituras e escritas entre tenants retornam 403. Ambos foram medidos; consulte "Performance e dados medidos".
Performance e dados medidos
Tempos de execução e parâmetros principais
| Implantação | LLM | TTS / ASR | Rede |
|---|---|---|---|
| Nuvem SenseCraft | Hospedado pela Seeed | Hospedado pela Seeed | Requer Internet |
| Sua própria API | Qualquer endpoint compatível com OpenAI (por exemplo, DeepSeek) | OpenAI · Azure Speech · Volcano Engine · Alibaba Cloud · Edge TTS | Requer Internet |
| Jetson local | EdgeLLM: Qwen3.5-4B, profile qwen35-4b-gdn-mtp, mecanismo 8k | OpenVoiceStream (reconhecimento + síntese + voiceprint) | Apenas LAN |
As imagens locais são construídas para JetPack 6.2 / TensorRT 10.3.
BUSINESS_RATE_LIMIT: limite de taxa para endpoints de saída de estoque e outros endpoints de negócio, padrão 600 requisições/minuto, contado por identidade autenticada (chave de API / sessão) e por IP de origem apenas quando nenhuma identidade estiver disponível. Os limites anti-enumeração em registro, recuperação de senha e verificação de dispositivo contam por IP.- Número de lote
batch_no: formatoYYYYMMDD-NNN, alocado de forma atômica, portanto gravações de entrada de estoque concorrentes são serializadas.
Medições da Warehouse REST API
Dispositivo: reComputer série R2000 (arm64) executando o container do sistema de armazém. Condições: 60 s por nível, 1 armazém, 50 materiais semeados, backend SQLite; as requisições trafegam por um link WAN Tailscale.
| Operação | Nível | Resultado |
|---|---|---|
GET /api/materials/list | concorrência 10 | p95 404 ms, p99 2,7 s, 0% de erros |
GET /api/materials/list | concorrência 20 | p95 824 ms, p99 5,3 s, 0% de erros |
GET /api/materials/list | concorrência 50 | p95 5,5 s, p99 8,7 s, 0% de erros |
POST /api/materials/stock-in | concorrência 5 / 10 / 20 | 0% de erros em todos os três níveis; 1481 lotes criados, 0 números de lote duplicados; p95 634 ms – 4,96 s |
POST /api/materials/stock-out | concorrência 10 / 20 / 50, duas chaves de API compartilhando um IP de saída | 0 HTTP 429 dentro do padrão de 600 requisições/minuto; cerca de 5–6 requisições/s por identidade |
| Interrupção de serviço | cerca de 10 req/s de tráfego de consulta, 34 s de interrupção a partir de um restart de container | 100% das requisições falham durante a interrupção, sem enfileiramento ou repetição; recuperação completa em cerca de 1 s, sem backlog, sem dados corrompidos |
| Isolamento por função e tenant | 4 sondagens pontuais | 4/4 conforme esperado: chave VIEW escrita 403, leitura 200; escrita entre tenants 403, leitura 403 |
Reproduzir: runs/2026-09-05-load/, evaluation/runs/2026-09-06-a2-retest/results.md
Vazão do LLM local
| Dispositivo | Modelo | Vazão | Condições |
|---|---|---|---|
| reComputer Robotics J5011 | EdgeLLM Qwen3.5-4B | cerca de 16 tokens/s | Número de referência upstream, sem log de execução anexado |
Degradações conhecidas
- A latência de consulta de inventário se degrada a partir de concorrência 20. O p95 sobe de 404 ms em concorrência 10 para 824 ms em 20 e 5,5 s em 50, o que é lento demais para uso interativo.
- A REST API não possui fila offline. Requisições enviadas durante uma interrupção de rede ou serviço falham e não são repetidas; reconexão e backoff cobrem apenas o canal WebSocket de voz MCP. Mitigações: manter a rede do gateway disponível (priorizar cabeado, energia com UPS, serviço e clientes na mesma LAN) para que a janela de indisponibilidade se reduza ao tempo de reinicialização do dispositivo; ou adicionar uma fila de escrita no lado do cliente que reproduza em ordem após reconectar e faça deduplicação por número de lote (a fila no lado do cliente não está implementada).
Próximos passos
- Executar os testes de carga da REST do sistema de armazém no gateway reComputer R1125-10.
Fontes de dados e assets
- Números de teste de carga, condições de teste e limites conhecidos: upstream
sensecraft-solutions@smart_warehousedescription.md, "Measured Boundaries" e "Known Limitations". - Vazão do LLM local (cerca de 16 tokens/s, reComputer Robotics J5011): a seção "Preset: Tier 3 · Premium" do
guide.mdupstream. - Funções de dispositivo, composição de níveis e requisitos de acelerador:
intro.device_catalogeintro.presetsemsolution.yamlupstream. - Código-fonte do sistema de armazém: github.com/suharvest/warehouse_system.
- Imagens de produto: catálogo de produtos Seeed Studio (media-cdn.seeedstudio.com).
- Imagens de cena: assets de soluções Seeed Studio (files.seeedstudio.com).




