Vision
La API de alto nivel usa máquinas 1–4, bandejas 11–18 y canales 0–9. Los índices de máquina del protocolo empiezan en cero y se traducen internamente.
Consultar antes de dispensar
jsd.on('vision:machine-status', status => {
console.log(status.machine, status.availabilityToDispense);
});
await jsd.vision.requestMachineStatus({ machine: 1 });getMachineStatus(1) lee la caché, no el equipo. Para que isAvailableToDispense({ machine: 1 }) devuelva true, la máquina debe estar conectada, en servicio, con puerta cerrada y disponible como AVAILABLE-TO-DISPENSE o ELEVATOR-COLLECTION-POSITION.
Dispensado y finalización
jsd.on('vision:dispense-status', result => console.log(result.token, result.status));
if (jsd.vision.isAvailableToDispense({ machine: 1 })) {
const delivered = await jsd.vision.dispense({ machine: 1, selection: 12 });
console.log(delivered);
}dispense() convierte la selección a bandeja/canal. La velocidad predeterminada es 5 y el tiempo posterior 0. dispenseFromSelection() envía una selección JSD directamente; las operaciones por canal comprueban la disponibilidad almacenada. dispenseFromChannelExtended() añade fragilidad y ajustes del elevador.
Sin cart, COLLECTED o WAITING-COLLECTION resuelve true. Con cart: true, DISPENSED-CAN-MULTIPLE resuelve true. Los fallos resuelven false; los demás estados mantienen pendiente la promesa.
| Código | Estado |
|---|---|
| 0 | RECEIVED |
| 1 | IN-PROGRESS |
| 2 | WAITING-COLLECTION |
| 3 | COLLECTED |
| 4 | NO-PERFORMED |
| 5 | TOKEN-NOT-FOUND |
| 6 | QUEUE-FULL |
| 7 | CHANNEL-NO-CONNECTED |
| 8 | SELECTION-UNAVAILABLE |
| 9 | FAILED-DISPENSE |
| 10 | UNCOLLECTED |
| 11 | DISPENSED-CAN-MULTIPLE |
| 12 | DISPENSE-CANCELLED |
| 13 | PRODUCT-EXPIRED |
extendedStatus detalla puerta, motor, sensores, elevador, existencias, comunicación o caducidad. Valores desconocidos producen UNKNOWN; sin detalle extendido, el valor es null. Consulta la carga útil.
Canales y carrito
jsd.on('vision:channels-progress', data => console.log(data.progress));
const channels = await jsd.vision.assignChannels({ machine: 1 });La asignación verifica 80 selecciones y emite vision:channels al completar. Solo se admite una asignación simultánea. dispenseCart() procesa lotes de diez, espera disponibilidad entre lotes y devuelve resultados por selección. Registra las excepciones del lote y continúa; no tiene plazo de cancelación.
Configuración y mantenimiento
La referencia completa incluye asociaciones de canales, configuración de selección, identificación, temperatura, tiempos, fallos activos e inactivos, perecederos, luces, recogida, cola, autoprueba y reinicio JSD. Consulta todos los eventos Vision.
El estado CONNECTED de una máquina y la conexión serial describen capas distintas.