Gestión de almacén por voz en hardware perimetral: construcción, despliegue y resultados medidos
Esto es una ayuda para el operador, no un libro de inventario certificado. La REST API no tiene cola sin conexión: las solicitudes enviadas durante una caída de red o servicio fallan y no se reejecutan después de la recuperación.
Qué hace esta solución
Un operador en el muelle de recepción dice "registrar 10 cajas de manzanas". El SenseCAP Watcher en la estantería lo escucha y se escribe un registro de entrada de stock en la base de datos del almacén en una pasarela reComputer en el mismo edificio. Pregunta "cuántas manzanas quedan" y la respuesta se devuelve por voz. Sin teclear, sin menús, las manos permanecen en la mercancía.
Diseñado para ubicaciones donde las transacciones ocurren lejos de un teclado: muelles de recepción, pasillos de estanterías, cabinas de montacargas y pequeños almacenes que nunca adoptaron un WMS porque la formación costaba más de lo que ahorraba.
- Implementación de código abierto: github.com/suharvest/warehouse_system
- Elegir una configuración y desplegar: página de diseño de referencia
El habla y la base de datos se conectan mediante MCP (Model Context Protocol). El sistema de almacén publica cada operación de inventario como una herramienta MCP, y el agente de voz en el Watcher se conecta a ese endpoint como un cliente MCP. Añadir una acción de voz significa añadir una herramienta, sin reentrenar el modelo de voz; integrar un ERP/WMS existente significa mapear su interfaz de datos al mismo conjunto de herramientas.

Watcher funciona una vez montado
El SenseCAP Watcher incorpora el firmware del agente de voz y de reconocimiento facial. Flashea el dispositivo, móntalo en el puesto y los operadores podrán registrar stock por voz con verificación de identidad.
Los datos se quedan en el sitio
La base de datos del almacén se ejecuta en una pasarela reComputer en el sitio. El Nivel 3 también mantiene el reconocimiento, el LLM y la síntesis en las instalaciones y no llama a ningún servicio externo después del despliegue.
Código abierto, se conecta a tu ERP/WMS
El sistema de almacén es de código abierto. Conectar un sistema existente significa mapear su interfaz de datos al mismo conjunto de herramientas MCP, del orden de unas pocas docenas de líneas de código de mapeo.
Nuevos comandos sin reentrenar
Añadir una acción de voz significa registrar una herramienta MCP. El firmware del Watcher permanece sin cambios.
Qué muestra el panel
Tras una locución, el resultado aparece en el panel de la pasarela. La página de inventario lista la cantidad actual y el último movimiento de cada artículo:

La página de transacciones lista cada entrada y salida de stock con número de lote, operador y origen (voz o REST):

La lista de operadores se mantiene en la página de usuarios, y la verificación facial la utiliza como referencia:

Qué hardware necesitas
Tres roles de dispositivo. Cuáles compres depende de dónde se permita ejecutar los datos y la IA de voz.
① Terminal de voz: SenseCAP Watcher. Necesario en todos los niveles, uno por puesto de trabajo. Tiene dos procesadores: el ESP32 ejecuta el agente de voz Xiaozhi (palabra de activación, grabación, streaming, cliente MCP), y el Himax WE2 ejecuta el firmware de reconocimiento facial para la verificación del operador.
② Pasarela perimetral. Ejecuta el sistema de almacén y, en los niveles autoalojados, también el endpoint MCP. Determina si el reconocimiento facial puede trasladarse a la pasarela y cuántos puestos puede atender un solo host.
③ Host de IA en las instalaciones. Solo necesario cuando el reconocimiento, el LLM y la síntesis deben permanecer todos en las instalaciones.
| Modelo | Rol en este diseño | Cuándo elegirlo | |
|---|---|---|---|
![]() | SenseCAP Watcher | Terminal de voz, cliente MCP, reconocimiento facial en el dispositivo | Siempre, uno por puesto |
![]() | reComputer R1125-10 | Pasarela perimetral que ejecuta el sistema de almacén | Los datos de inventario se quedan en el sitio, hasta 20 operadores, reconocimiento facial en el Watcher |
![]() | reComputer Industrial R2135-12 | Pasarela perimetral con un acelerador Hailo-8 | Más de 20 operadores, o se requiere detección de vida |
![]() | reComputer J4012 | Una sola caja que ejecuta el sistema de almacén, el reconocimiento facial y un servicio de voz autoalojado | 2–3 puestos comparten un host |
![]() | reComputer Robotics J5011 | LLM y voz en las instalaciones, sin llamadas a servicios externos | La instalación debe permanecer sin conexión |
El Watcher almacena como máximo 20 plantillas faciales en el dispositivo. Más allá de 20 operadores, el reconocimiento tiene que trasladarse a la pasarela: hasta 20, elige el R1125; por encima de 20, elige el R2135 con Hailo-8.
Otros requisitos previos: el Watcher solo se conecta a Wi‑Fi de 2,4 GHz (un SSID solo de 5 GHz no aparece en el escaneo de aprovisionamiento), y la pasarela debe estar en la misma LAN. El prechequeo de despliegue del Nivel 3 verifica el runtime de contenedores de NVIDIA y alrededor de 10 GB de espacio libre en disco (modelos de voz más archivos del motor LLM).
Límites de selección negativa
- Necesidades de LLM totalmente sin conexión: Si se opera en un almacén clasificado o aislado por aire que requiere interacción con LLM sin conexión, evita los niveles dependientes de la nube; selecciona el Nivel 3 con reComputer J4012 (Orin NX 16GB).
- Cola en caso de caída de red: La REST API del almacén actualmente carece de una cola sin conexión del lado del servidor; los clientes deben almacenar en búfer las transacciones localmente si operan sobre una red inalámbrica intermitente.
Cómo desplegar in situ
Tres pasos: montar y flashear el Watcher, iniciar los contenedores en la pasarela, conectar la ruta de voz.
Paso 1: montar el Watcher
Monta el Watcher en el muelle de recepción, el pasillo de estanterías o la cabina de la carretilla elevadora, donde los operarios realmente registran la entrada y salida de existencias. Si se monta en la oficina, obliga a los operarios a recordar las cantidades y caminar hasta allí para introducirlas.
El flasheo se realiza por USB-C; el dispositivo se enumera como un puente WCH USB-UART (0x1a86:0x55d2). Dos imágenes de firmware, una por procesador: el agente de voz Xiaozhi va en el ESP32, el firmware de reconocimiento facial en el Himax WE2.
Paso 2: levantar la pasarela
El sistema de almacén es un servicio Docker. Los pasos de despliegue difieren por nivel; elige una configuración en la página de diseño de referencia y descarga el paquete de aplicación correspondiente.
El despliegue puede ejecutarse por SSH hacia la pasarela o directamente en la pasarela. El inventario existente puede importarse en el primer arranque con la plantilla de Excel suministrada.
Tras el despliegue, el panel está en http://GATEWAY_IP:2125, y la comprobación de estado del contenedor es GET /health en el mismo puerto.
Paso 3: conectar la ruta de voz
Trial, Tier 1 y Tier 2A usan una URL de endpoint MCP emitida por SenseCraft. Los niveles 2B y 3 autoalojan el endpoint MCP en el puerto 18004 y el servidor de voz en 18000 (consola de administración en 18003). El nivel 3 añade EdgeLLM en 8000 y OpenVoiceStream en 8621, y no llama a ningún servicio externo después del despliegue.
Interfaces disponibles
Dos superficies de integración:
Endpoint MCP (puerto 18004): para el lado de voz. Todo lo que el agente puede hacer es una herramienta en este endpoint. Ampliar el conjunto de comandos significa registrar otra herramienta; el firmware del Watcher permanece sin cambios. Integrar un ERP/WMS existente significa implementar la interfaz de datos de tu sistema contra las mismas herramientas, del orden de unas pocas docenas de líneas de código de mapeo. Las variaciones en la formulación se emparejan de forma difusa con el comando registrado más cercano en lugar de ser rechazadas.
REST API (puerto 2125): para otros sistemas. La lista de inventario, el historial de transacciones y el estado del agente están disponibles sobre HTTP.
| Interfaz | Endpoint / puerto | Carga útil |
|---|---|---|
| Panel + REST API | http://GATEWAY_IP:2125 | Lista de inventario, historial de transacciones, estado de conexión del agente |
| Comprobación de estado | http://GATEWAY_IP:2125/health | 200 una vez que el servicio de almacén está listo |
| Endpoint MCP | 18004 | Operaciones de inventario publicadas como herramientas MCP |
| Base de datos de inventario | SQLite en /data/warehouse.db en el volumen warehouse_data | Montar o volcar para un trabajo BI/ERP externo |
| Servidor de voz | WebSocket 18000, consola de administración 18003 | Flujo de audio del Watcher (niveles 2B y 3) |
| IA local | 8000 EdgeLLM (compatible con OpenAI), 8621 OpenVoiceStream | Completados de chat; reconocimiento, síntesis y huella de voz (nivel 3) |
El acceso está delimitado por rol de clave de API y por inquilino. Una clave VIEW en un endpoint de escritura devuelve 403; las lecturas y escrituras entre inquilinos devuelven ambas 403. Ambas se midieron; consulta "Rendimiento y datos medidos".
Rendimiento y datos medidos
Tiempos de ejecución y parámetros clave
| Despliegue | LLM | TTS / ASR | Red |
|---|---|---|---|
| Nube SenseCraft | Alojado por Seeed | Alojado por Seeed | Requiere Internet |
| Tu propia API | Cualquier endpoint compatible con OpenAI (p. ej. DeepSeek) | OpenAI · Azure Speech · Volcano Engine · Alibaba Cloud · Edge TTS | Requiere Internet |
| Jetson local | EdgeLLM: Qwen3.5-4B, perfil qwen35-4b-gdn-mtp, motor 8k | OpenVoiceStream (reconocimiento + síntesis + huella de voz) | Solo LAN |
Las imágenes locales están construidas para JetPack 6.2 / TensorRT 10.3.
BUSINESS_RATE_LIMIT: límite de velocidad para stock-out y otros endpoints de negocio, por defecto 600 solicitudes/minuto, contado por identidad autenticada (clave de API / sesión) y por IP de origen solo cuando no hay identidad disponible. Los límites anti-enumeración en registro, recuperación de contraseña y verificación de dispositivo cuentan por IP.- Número de lote
batch_no: formatoYYYYMMDD-NNN, asignado de forma atómica, por lo que las escrituras de stock-in concurrentes se serializan.
Mediciones de la REST API de almacén
Dispositivo: reComputer R2000 serie (arm64) ejecutando el contenedor de almacén. Condiciones: 60 s por nivel, 1 almacén, 50 materiales sembrados, backend SQLite; las solicitudes viajan sobre un enlace WAN Tailscale.
| Operación | Nivel | Resultado |
|---|---|---|
GET /api/materials/list | concurrencia 10 | p95 404 ms, p99 2.7 s, 0% errores |
GET /api/materials/list | concurrencia 20 | p95 824 ms, p99 5.3 s, 0% errores |
GET /api/materials/list | concurrencia 50 | p95 5.5 s, p99 8.7 s, 0% errores |
POST /api/materials/stock-in | concurrencia 5 / 10 / 20 | 0% errores en los tres niveles; 1481 lotes creados, 0 números de lote duplicados; p95 634 ms – 4.96 s |
POST /api/materials/stock-out | concurrencia 10 / 20 / 50, dos claves de API compartiendo una IP de salida | 0 HTTP 429 dentro del valor por defecto de 600 solicitudes/minuto; unas 5–6 solicitudes/s por identidad |
| Interrupción del servicio | unos 10 req/s de tráfico de consulta, 34 s de interrupción por un reinicio de contenedor | 100% de las solicitudes fallan durante la interrupción, sin colas ni reintentos; recuperación completa en unos 1 s, sin acumulación, sin datos sucios |
| Aislamiento por rol e inquilino | 4 sondeos de un solo disparo | 4/4 como se esperaba: escritura con clave VIEW 403, lectura 200; escritura entre inquilinos 403, lectura 403 |
Reproducir: runs/2026-09-05-load/, evaluation/runs/2026-09-06-a2-retest/results.md
Rendimiento del LLM local
| Dispositivo | Modelo | Rendimiento | Condiciones |
|---|---|---|---|
| reComputer Robotics J5011 | EdgeLLM Qwen3.5-4B | unos 16 tokens/s | Cifra de referencia, sin registro de ejecución adjunto |
Degradación conocida
- La latencia de consulta de inventario se degrada a partir de concurrencia 20. El p95 sube de 404 ms en concurrencia 10 a 824 ms en 20 y 5.5 s en 50, lo cual es demasiado lento para uso interactivo.
- La REST API no tiene cola offline. Las solicitudes enviadas durante una interrupción de red o servicio fallan y no se reintentan; la reconexión y el backoff solo cubren el canal WebSocket de voz MCP. Mitigaciones: mantener disponible la red de la pasarela (priorizar cableado, alimentación por SAI, servicio y clientes en la misma LAN) para que la ventana de indisponibilidad se reduzca al tiempo de reinicio del dispositivo; o añadir una cola de escritura en el lado del cliente que reproduzca en orden tras reconectar y desduplique por número de lote (la cola del lado del cliente no está implementada).
Próximos pasos
- Ejecutar las pruebas de carga de la REST API de almacén en la pasarela reComputer R1125-10.
Fuentes de datos y recursos
- Cifras de pruebas de carga, condiciones de prueba y límites conocidos: upstream
sensecraft-solutions@smart_warehousedescription.md, "Measured Boundaries" y "Known Limitations". - Rendimiento del LLM local (unos 16 tokens/s, reComputer Robotics J5011): la sección "Preset: Tier 3 · Premium" del
guide.mdupstream. - Roles de dispositivos, composición de niveles y requisitos de acelerador:
intro.device_catalogeintro.presetsen elsolution.yamlupstream. - Código fuente del sistema de almacén: github.com/suharvest/warehouse_system.
- Imágenes de producto: catálogo de productos de Seeed Studio (media-cdn.seeedstudio.com).
- Imágenes de escenas: recursos de soluciones de Seeed Studio (files.seeedstudio.com).




