Skip to content

Vision: events ​

Complete reference. The signature is a listener argument tuple, not a wrapper object.

vision:wrong-cmd ​

The device rejected a command format; opcodeName identifies the command.

ts
type Arguments = [
    data: {
      opcodeName: string;
      opcode: number;
      params: string[];
    }
  ];
ts
jsd.on('vision:wrong-cmd', payload => console.log(payload));

vision:machine-status ​

Machine status snapshot; also updates the local status cache.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      status: MachineStatusName;
      machineInService: boolean;
      doorOpen: boolean;
      availabilityToDispense: MachineAvailableStatus;
      hasLightsOn: boolean;
      temperature: string;
    }
  ];
ts
jsd.on('vision:machine-status', payload => console.log(payload));

vision:channels-progress ​

Progress of assignChannels(), including current and verified selections.

ts
type Arguments = [
    data: {
      progress: number;
      current: number;
      verified: number;
    }
  ];
ts
jsd.on('vision:channels-progress', payload => console.log(payload));

vision:channels ​

Complete channel assignment result after all 80 selections are verified.

ts
type Arguments = [data: SelectionStatus[]];
ts
jsd.on('vision:channels', payload => console.log(payload));

vision:channel-status ​

Whether the channel corresponding to a selection is active.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      selection: OneTo240;
      active: boolean;
    }
  ];
ts
jsd.on('vision:channel-status', payload => console.log(payload));

vision:status-selection ​

Configuration or association state of a selection.

ts
type Arguments = [
    data: {
      selection: OneTo240;
      status: StatusSelectionName;
    }
  ];
ts
jsd.on('vision:status-selection', payload => console.log(payload));

vision:dispense-status ​

Token-correlated dispense status, including optional extended failure details.

ts
type Arguments = [
    data: {
      token: DispenseToken;
      status: string;
      machine: MachineValid | null;
      tray: ValidTray | null;
      channel: ValidChannel | null;
      extendedStatus: string | null;
    }
  ];
ts
jsd.on('vision:dispense-status', payload => console.log(payload));

vision:selection-dispense-config ​

Speed and post-run configuration returned for a selection.

ts
type Arguments = [
    data: {
      selection: OneTo240;
      speed: SpeedOption;
      timePostRun: TimePostRunOption;
    }
  ];
ts
jsd.on('vision:selection-dispense-config', payload => console.log(payload));

vision:channels-linked-to-selection ​

Channels associated with a selection and the response status.

ts
type Arguments = [
    data: {
      selection: OneTo240;
      linkedChannels: {
        machine: MachineValid;
        tray: ValidTray;
        channel: ValidChannel;
      }[];
      status: StatusChannelsLinkedToSelection;
    }
  ];
ts
jsd.on('vision:channels-linked-to-selection', payload => console.log(payload));

vision:machine-id ​

Machine model, serial number, and firmware identification.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      model: string;
      serialNumber: string;
      firmwareVersion: string;
    }
  ];
ts
jsd.on('vision:machine-id', payload => console.log(payload));

vision:current-temperature ​

Working, internal, and air temperatures, plus cooling-unit state.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      workingTemperature: string;
      currentTemperatureInsideMachine: string;
      currentTemperatureAir: string;
      coolUnitStatus: 'ON' | 'OFF';
    }
  ];
ts
jsd.on('vision:current-temperature', payload => console.log(payload));

vision:alarm-faults-events ​

Alarm or fault event becoming active or cleared.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      event: string;
      status: 'ACTIVE' | 'CLEARED';
    }
  ];
ts
jsd.on('vision:alarm-faults-events', payload => console.log(payload));

vision:time-waiting-for-product-collection ​

Configured collection and dispense waiting intervals.

ts
type Arguments = [
    data: {
      minutesProductCollection: Range<1, 11>;
      secondsTimeBetweenDispenseManoeuvres: Range<0, 66>;
      secondsBetweenCollectAndStartNextDispense: Range<1, 256>;
    }
  ];
ts
jsd.on('vision:time-waiting-for-product-collection', payload => console.log(payload));

vision:collect ​

Response to a product collection cycle.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      status: string;
    }
  ];
ts
jsd.on('vision:collect', payload => console.log(payload));

vision:reset-sold-out-channels ​

Result of resetting sold-out channels.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      status: string;
    }
  ];
ts
jsd.on('vision:reset-sold-out-channels', payload => console.log(payload));

vision:time-waiting-after-product-collection ​

Configured interval following product pickup.

ts
type Arguments = [
    data: {
      secondsBetweenCollectAndStartNextDispense: Range<15, 121>;
    }
  ];
ts
jsd.on('vision:time-waiting-after-product-collection', payload => console.log(payload));

vision:jsd-version ​

JSD software identity and build information.

ts
type Arguments = [
    data: {
      name: string;
      compileNumber: string;
      compileDate: string;
      description: string;
    }
  ];
ts
jsd.on('vision:jsd-version', payload => console.log(payload));

vision:active-faults ​

Detailed fault record including counters, duration, and date.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      status: 'ACTIVE' | 'CLEARED';
      fault: number;
      appearancesNumber: number;
      partialNumberActivated: number;
      minutesActive: number;
      date: string;
    }
  ];
ts
jsd.on('vision:active-faults', payload => console.log(payload));

vision:jsd-dispensing-queue ​

Counts of free, processed, and pending dispensing queue entries.

ts
type Arguments = [
    data: {
      free: number;
      processed: number;
      notProcessed: number;
    }
  ];
ts
jsd.on('vision:jsd-dispensing-queue', payload => console.log(payload));

vision:special-characteristics-selection ​

Perishable, fragile/heavy, and elevator settings for a selection.

ts
type Arguments = [
    data: {
      selection: OneTo240;
      perishable: boolean;
      fragileOrHeavy: boolean;
      typeAdjustElevator: 'lower' | 'upper';
      timeAdjustElevator: number;
    }
  ];
ts
jsd.on('vision:special-characteristics-selection', payload => console.log(payload));

vision:perishable-products-config ​

Temperature limit, expiry delay, and perishable alarm configuration.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      perishableActive: boolean;
      alarmPerisableTriggered: boolean;
      maxTemperature: string;
      minutesBeforeExpire: number;
    }
  ];
ts
jsd.on('vision:perishable-products-config', payload => console.log(payload));

vision:active-faults-list ​

Current fault codes and descriptions for a machine.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      faults: {
        code: number;
        description: string;
      }[];
      ok: boolean;
    }
  ];
ts
jsd.on('vision:active-faults-list', payload => console.log(payload));

vision:jsd-status-reset ​

JSD restart acknowledgement or completion state.

ts
type Arguments = [
    data: {
      type: JsdResetStatus;
    }
  ];
ts
jsd.on('vision:jsd-status-reset', payload => console.log(payload));

vision:extended-dispense-status-data ​

Whether extended dispense status reporting is enabled.

ts
type Arguments = [
    data: {
      enabled: boolean;
    }
  ];
ts
jsd.on('vision:extended-dispense-status-data', payload => console.log(payload));

vision:trays-positioning-phototransistors-status ​

Tray positioning phototransistor readings.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      trays: { [key: number]: string | null };
    }
  ];
ts
jsd.on('vision:trays-positioning-phototransistors-status', payload => console.log(payload));

vision:jsd-license-error ​

A licensing or price-control restriction rejected the operation.

ts
type Arguments = [
    data: {
      type: 'unknown' | 'expired-license' | 'app-number-not-licensed' | 'price-control-active-direct-dispense-not-allowed';
      opcode: number;
      actionName: string;
      params: string[];
    }
  ];
ts
jsd.on('vision:jsd-license-error', payload => console.log(payload));

vision:dispensing ​

A tracked dispense is in progress.

ts
type Arguments = [
    data: {
      token: DispenseToken;
      machine: MachineValid | null;
      tray: ValidTray | null;
      channel: ValidChannel | null;
      selection: Range0To81 | null;
    }
  ];
ts
jsd.on('vision:dispensing', payload => console.log(payload));

vision:waiting-collection ​

A non-cart tracked dispense reached collection or waiting-for-collection state.

ts
type Arguments = [
    data: {
      machine: MachineValid | null;
    }
  ];
ts
jsd.on('vision:waiting-collection', payload => console.log(payload));

vision:door ​

Door state emitted for every machine-status response, even when unchanged.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      open: boolean;
    }
  ];
ts
jsd.on('vision:door', payload => console.log(payload));

vision:connection ​

Machine connection state emitted for every machine-status response, even when unchanged.

ts
type Arguments = [
    data: {
      machine: MachineValid;
      connected: boolean;
    }
  ];
ts
jsd.on('vision:connection', payload => console.log(payload));

Aliases used in these signatures are defined in reference types.

Explicit protocol, typed events, isolated transport.