7 OPC UA ObjectTypes

7.1 MachineEngineType definition

7.1.1 Overview

The MachineEngineType provides the interface to access the machine engine. It is used by other components like the UI, the payment service and the audit collect. A more detailed overview is given in 6.2.1. It is formally defined in Table 15.

7.1.2 ObjectType definition

Table 15 - MachineEngineType definition
Attribute Value
BrowseNameMachineEngineType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject2:IdentificationIdentificationTypeM
0:HasComponentObjectConfigurationBaseConfigurationTypeM
0:HasComponentObjectCapabilitiesMachineEngineCapabilitiesTypeM
0:HasComponentObjectDeliveryMachineEngineDeliveryTypeM
0:HasComponentObjectStatusMachineEngineStatusTypeM
0:HasComponentObjectComponentsBaseComponentsTypeO
0:GeneratesEventObjectTypeVendingBaseAuditEventType
0:GeneratesEventObjectTypeConfigurationChangedEventType
Conformance Units
UnattendedRetail MachineEngine

The 2:Identification Object provides Properties describing the identification of the machine engine (see 7.2 for details).

The Configuration Object provides the configuration information of the machine engine (see 7.3 for details).

The Capabilities Object provides configuration information for the UI (see 7.5 for details).

The Delivery Object provides functionality to request a delivery (by the payment service) as well as expose the status of the delivery (displayed by the UI) (see 7.6 for details).

The Status Object provides the overall status of the machine engine, to be displayed in the UI and consumed by the payment service (see 7.7 for details).

The optional Components Object is the entry point to information about subcomponents of the machine engine (see 7.4 for details).

The GeneratesEvent Reference to the VendingBaseAuditEventType indicates that instances will generate Events of that EventType (see 7.26 for details).

The GeneratesEvent Reference to the ConfigurationChangedEventType indicates that an instance may generate Events of that EventType (see 7.29). Such an Event shall be generated when Objects gets added or removed from the Components Object, or when the values of Variables of the Configuration or Capabilities change. Multiple changes may be reported by a single Event.

7.2 IdentificationType definition

7.2.1 Overview

The IdentificationType provides identification information of components of a Vending Machine. It is formally defined in Table 16.

7.2.2 ObjectType definition

Table 16 - IdentificationType definition
Attribute Value
BrowseNameIdentificationType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 2:FunctionalGroupType
0:HasPropertyVariable2:Manufacturer0:LocalizedText0:PropertyTypeM
0:HasPropertyVariable2:ManufacturerUri0:String0:PropertyTypeO
0:HasPropertyVariable2:Model0:LocalizedText0:PropertyTypeO
0:HasPropertyVariable2:ProductCode0:String0:PropertyTypeM
0:HasPropertyVariable2:HardwareRevision0:String0:PropertyTypeO
0:HasPropertyVariable2:SoftwareRevision0:String0:PropertyTypeM
0:HasPropertyVariable2:DeviceRevision0:String0:PropertyTypeO
0:HasPropertyVariable2:DeviceManual0:String0:PropertyTypeO
0:HasPropertyVariable2:DeviceClass0:String0:PropertyTypeO
0:HasPropertyVariable2:SerialNumber0:String0:PropertyTypeO
0:HasPropertyVariable2:ProductInstanceUri0:String0:PropertyTypeM
0:HasPropertyVariable2:RevisionCounter0:Int320:PropertyTypeO
0:HasPropertyVariable2:SoftwareReleaseDate0:DateTime0:PropertyTypeO
0:HasPropertyVariable2:PatchIdentifiers0:String[]0:PropertyTypeO
0:HasInterfaceObjectType2:IVendorNameplateType
Conformance Units
UnattendedRetail MachineEngine
UnattendedRetail PaymentService
UnattendedRetail UI
UnattendedRetail PriceService
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill
UnattendedRetail PaymentDevice Cashless
UnattendedRetail AuditCollect

The ObjectType implements the Interface 2:IVendorNameplateType. The Properties of the 2:IVendorNameplateType Interface shall be used as defined in OPC 10000-100.

The 2:Manufacturer Property shall use the three-character manufacturer identification as defined in Annex B of EVA DTS, if the company is represented in that annex. The LocaleId shall be left empty.

The 2:ProductInstanceUri Property identifies the component globally unique, as defined in OPC 10000-100. The maximum length is 255 characters, as defined in OPC 10000-100. It is recommended to use the 2:ManufacturerUri followed by the 2:Model followed by the 2:SerialNumber, for example "https://example.com/Model_ABC/SN12345678".

If the component is delivered with a specific hardware, the 2:HardwareRevision Property shall be provided. If the component is only provided as software, it may be omitted.

7.3 BaseConfigurationType definition

7.3.1 Overview

The BaseConfigurationType provides configuration information of components of a Vending Machine. It is formally defined in Table 17.

7.3.2 ObjectType definition

Table 17 - BaseConfigurationType definition
Attribute Value
BrowseNameBaseConfigurationType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasPropertyVariable0:LocalTime0:TimeZoneDataType0:PropertyTypeO
0:HasPropertyVariableDefaultCurrency0:CurrencyUnitType0:PropertyTypeO
Conformance Units
UnattendedRetail MachineEngine
UnattendedRetail PaymentService
UnattendedRetail UI
UnattendedRetail PriceService
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill
UnattendedRetail PaymentDevice Cashless
UnattendedRetail AuditCollect

The optional 0:LocalTime Property provides information about the current difference between the local time and the UTC time of the component. If the OPC UA Server is in the same local time (which typically is the case), the 0:LocalTime Property of the Server Object of the OPC UA Server may be referenced.

The optional DefaultCurrency Property provides the default currency the component uses when sending/receiving values of PriceDataType without a specified currency. When the default currency is provided, any usage of PriceDataType is setting the Currency field to NULL, if the DefaultCurrency is used. Any change of the DefaultCurrency requires a restart of the OPC UA Server. If an OPC UA Server provides several components with a DefaultCurrency (e.g., payment service and payment devices), the DefaultCurrency shall be identical for all those components.

Vendors may add additional configuration information to this Object. Vendors may define subtypes of this ObjectType in their implementations.

The configuration may be writable via the OPC UA interface to change the configuration of the Vending Machine component.

7.4 BaseComponentsType definition

7.4.1 Overview

The BaseComponentsType provides an entry point for subcomponents of components of a Vending Machine. It is formally defined in Table 18.

7.4.2 ObjectType definition

Table 18 - BaseComponentsType definition
Attribute Value
BrowseNameBaseComponentsType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:FolderType
0:HasComponentObject<Component>0:BaseObjectTypeOP
Conformance Units
UnattendedRetail MachineEngine
UnattendedRetail PaymentService
UnattendedRetail UI
UnattendedRetail PriceService
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill
UnattendedRetail PaymentDevice Cashless
UnattendedRetail AuditCollect

The <Component> Object of optional placeholder is a representative for subcomponents that may be added to the Object. This specification does not define any requirements on how to represent a subcomponent.

Vendors may define subtypes of this ObjectType in their implementations.

7.5 MachineEngineCapabilitiesType definition

7.5.1 Overview

The MachineEngineCapabilitiesType provides configuration information for the UI. It is formally defined in Table 19.

7.5.2 ObjectType definition

Table 19 - MachineEngineCapabilitiesType definition
Attribute Value
BrowseNameMachineEngineCapabilitiesType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasPropertyVariableOptionsOptionDescriptionDataType[]0:PropertyTypeM
0:HasPropertyVariableSelectionListSelectionDescriptionDataType[]0:PropertyTypeM
0:HasPropertyVariableSelectionListVersion0:SemanticVersionString0:PropertyTypeM
0:HasPropertyVariableOutputIds0:UInt16[]0:PropertyTypeM
Conformance Units
UnattendedRetail MachineEngine

The Options Variable provides the available options of the machine engine. For each possible selection in the SelectionList, it is defined what options are allowed to be used. The DataType is defined in 8.1. Each OptionId in the array shall be unique.

The SelectionList Variable provides the available selections of the machine engine. The DataType is defined in 8.2. Each entry of AvailableOptionIds shall be unique and shall also be an OptionId in the Options Variable.

The SelectionListVersion provides the current version of the SelectionList. Clients may cache the SelectionList and only access it after reconnect, if the SelectionListVersion has changed. Therefore, each change in the SelectionList shall change the SelectionListVersion. The same SelectionListVersion shall only be used if the new SelectionList is identical to the content of the previous SelectionList using the same SelectionListVersion. As the Options are used from the SelectionList, this also applies to the Options. If the Options are changing, the SelectionListVersion shall change as well.

The OutputIds provide a list of outputs for products the machine engine supports. It shall have at least one entry.

7.6 MachineEngineDeliveryType definition

7.6.1 Overview

The MachineEngineDeliveryType provides functionality to request a delivery (by the payment service) as well as exposes the status of the delivery (displayed by the UI). It is formally defined in Table 20.

7.6.2 ObjectType definition

Table 20 - MachineEngineDeliveryType definition
Attribute Value
BrowseNameMachineEngineDeliveryType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentVariableDeliveryRequestsDeliveryRequestDataType[]0:BaseDataVariableTypeM
0:HasComponentVariableDeliveryProgressDeliveryProgressDataType[]0:BaseDataVariableTypeM
0:HasComponentMethodDeliverM
0:HasComponentMethodStopDeliveryM
Conformance Units
UnattendedRetail MachineEngine

The DeliveryRequests Variable is an array that contains all delivery requests that have recently been added to the machine engine. It shall contain all delivery requests that are currently executing or are queued for execution. It is up to the implementation when the finished delivery requests get removed from the array. The simplest implementation just manages one entry and disallows a new delivery request while there is already one in execution. The DataType is defined in 8.3.

The DeliveryProgress Variable is an array that contains the progress information of delivery requests that are currently in execution or have recently been executed. It shall have one entry for each delivery request entry in the DeliveryRequests Variable. The DataType is defined in 8.5. It is up to the implementation how often to update the ProgressInPercent of a delivery progress entry. When the Status is changing, the entry of a delivery progress shall change.

7.6.3 Deliver Method

The Deliver Method puts a delivery request into the machine engine. When successfully executed, the delivery request shall be added to the DeliveryRequests Variable, and, considering the internal logic of the machine engine with respect to the order of the delivery requests, being executed. The status of the execution shall be reflected in the DeliveryProgress Variable.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and no entries are added to the DeliveryRequests and DeliveryProgress Variables.

The signature of this Method is specified below. Table 21 and Table 22 specify the Arguments and AddressSpace representation, respectively.

Signature

	Deliver (
	  [in]  0:String                      SelectionId,
	  [in]  OptionSelectionDataType[]     Options,
	  [in]  0:UInt64                      TransactionId,
	  [out] 0:Int32                       Status);
Table 21 - Deliver Arguments
Argument Description
SelectionIdSelectionId of the order. Method execution shall fail, if SelectionId not in the SelectionList of the Capabilities Object.
OptionsList of selected options for the SelectionId. May be an empty array, if no option is selected. The option shall be allowed for the SelectionId as defined in the SelectionList of the Capabilities Object.
TransactionId

A unique identifier given into the machine engine that uniquely identifies the deliver request. It shall be used as the TransactionId in the DeliveryRequests and the DeliveryProgress Variables.

The TransactionId shall only be used by the machine engine if the method returns successful (StatusCode is Good and Status is 0).

Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful

-1 = Invalid SelectionId

-2 = Invalid Options

-3 = Invalid TransactionId - duplicate

-4 = Cannot execute delivery

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 22 - Deliver AddressSpace definition
Attribute Value
BrowseNameDeliver
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.6.4 StopDelivery Method

The StopDelivery Method stops the physical delivery of a TransactionId, that has already been started. When executed, the delivery is still counted to be successfully delivered. The StopDelivery may be called by the UI, when for example a cup is overflowing with a coffee delivery.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed and the delivery was not stopped.

The signature of this Method is specified below. Table 23 and Table 24 specify the Arguments and AddressSpace representation, respectively.

Signature

	StopDelivery (
	  [in]  0:UInt64                      TransactionId,
	  [out] 0:Int32                       Status);
Table 23 - StopDelivery Arguments
Argument Description
TransactionIdUnique identifier representing a deliver request
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Invalid TransactionId.

-2 = Invalid status of TransactionId - delivery already finished

-3 = Invalid status of TransactionId - delivery not started

-4 = Selection does not support stopping

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 24 - StopDelivery AddressSpace definition
Attribute Value
BrowseNameStopDelivery
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.7 MachineEngineStatusType definition

7.7.1 Overview

The MachineEngineStatusType provides status information of the machine engine. It is formally defined in Table 25.

7.7.2 ObjectType definition

Table 25 - MachineEngineStatusType definition
Attribute Value
BrowseNameMachineEngineStatusType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentVariableWorkingStatusMachineEngineWorkingStatusEnum0:BaseDataVariableTypeM
0:HasComponentVariableOutputStatusOutputStatusDataType[]0:BaseDataVariableTypeM
0:HasComponentVariableSelectionIdStatusAvailabilityStatusDataType[]0:BaseDataVariableTypeM
0:HasComponentVariableOptionIdStatusAvailabilityStatusDataType[]0:BaseDataVariableTypeM
0:HasComponentVariable<SensorData>0:Number0:AnalogUnitTypeOP
0:HasComponentVariableMainColdTemperature0:Float0:AnalogUnitTypeO
0:HasComponentVariableMainHotTemperature0:Float0:AnalogUnitTypeO
0:HasComponentVariableActiveEVADTSStatusCodes0:String[]0:BaseDataVariableTypeO
Conformance Units
UnattendedRetail MachineEngine

The WorkingStatus Variable provides the information about the main status of the machine engine. The DataType is defined in 8.10.

The OutputStatus Variable indicates the status of each output from the machine engine. It shall have one entry per entry of the OutputIds of Capabilities with the same OutputId. The DataType is defined in 8.7.

The SelectionIdStatus Variable is an array and indicates for each selection the status. The UI should use this information to indicate if a selection is currently not available. For each entry in the SelectionList of the Capabilities Object there shall be an entry in the SelectionIdStatus. There shall not be entries in the SelectionIdStatus, that are not also in the SelectionList. The DataType is defined in 8.11.

The OptionIdStatus Variable is an array and indicates for each Option the status. The UI should use this information to indicate if an Option of a selection is currently not available. For each entry in the Options of the Capabilities Object there shall be an entry in the OptionIdStatus. There shall not be entries in the OptionIdStatus, that are not also in the Options. The DataType is defined in 8.11.

The <SensorData> Variable is an optional placeholder indicating that vendors may add additional sensor data to the Status Object. In this case, the AnalogUnitType should be used in order to provide meta data like the EngineeringUnits.

The MainHotTemperature is an optional Variable that should be used in Vending Machines where there is one main hot temperature, like the hot water temperature of a coffee machine.

The MainColdTemperature is an optional Variable that should be used in Vending Machines where there is one main cold temperature, like the cold air temperature in a snack or beverage machine.

The ActiveEVADTSStatusCodes Variable is an array of active status codes according to Annex C of EVA DTS.

7.8 PaymentServiceType definition

7.8.1 Overview

The PaymentServiceType provides the interface to access the payment service. It is used by other components like the UI and the audit collect. A more detailed overview is given in 6.2.2. It is formally defined in Table 26.

7.8.2 ObjectType definition

Table 26 - PaymentServiceType definition
Attribute Value
BrowseNamePaymentServiceType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject2:IdentificationIdentificationTypeM
0:HasComponentObjectDeliveryPaymentServiceDeliveryTypeM
0:HasComponentObjectConfigurationBaseConfigurationTypeM
0:HasComponentObjectPriceInformationPriceInformationTypeM
0:HasComponentObjectPaymentModesPaymentModesTypeO
0:HasComponentObjectPaymentDevicesPaymentDevicesTypeO
0:HasComponentObjectStatusPaymentServiceStatusTypeM
0:HasComponentObjectComponentsBaseComponentsTypeO
0:GeneratesEventObjectTypeVendingAuditEventType
0:GeneratesEventObjectTypeConfigurationChangedEventType
Conformance Units
UnattendedRetail PaymentService

The 2:Identification Object provides Properties describing the identification of the payment service (see 7.2 for details).

The Delivery Object provides the functionality to trigger a delivery by the UI (see 7.9 for details). In order to support a BasketId (see 6.3.2.3), the Delivery Object needs to be of type PaymentServiceBasketDeliveryType (see 7.10 for details).

The Configuration Object provides the configuration information of the payment service (see 7.3 for details).

The PriceInformation Object provides the prices for the selections of the machine engines, managed by the payment service (see 7.11 for details).

The optional PaymentModes Object contains one Object of PaymentModeType per payment mode supported by the payment service. It shall reference at least one Object of PaymentModeType (see 7.13 for details).

The optional PaymentDevices Object contains one Object of PaymentDeviceType per payment device provided by the payment service. It shall reference at least one Object of PaymentDeviceType (see 7.15 for details). Several payment devices may support the same payment mode. For example, there may be the payment mode "Cash" and the payment devices "Coin" and "Bill".

The PaymentModes and PaymentDevices Objects are optional and should be included only if the vending machine charges a price for any of the offered products; otherwise, they should be omitted.

The Status Object provides the status of the payment service and thereby of the overall Vending Machine (see 7.22 for details).

The optional Components Object is the entry point to information about subcomponents of the payment service (see 7.4 for details).

The GeneratesEvent Reference to the VendingAuditEventType indicates that instances will generate Events of that EventType (see 7.27 for details).

The GeneratesEvent Reference to the ConfigurationChangedEventType indicates that an instance may generate Events of that EventType (see 7.29). Such an Event shall be generated when Objects gets added or removed from the Components, PaymentModes or PaymentDevices Objects, or when the values of Variables of the Configuration change. Multiple changes may be reported by a single Event.

Note: Changes of Variables of the PaymentModes like AvailableCredit or the PaymentDevices do not trigger the creation of a ConfigurationChangedEvent. Clients interested in changes of those Variables need to subscribe to them.

7.9 PaymentServiceDeliveryType definition

7.9.1 Overview

The PaymentServiceDeliveryType provides the functionality to trigger a delivery by the UI. It is formally defined in Table 27.

7.9.2 ObjectType definition

Table 27 - PaymentServiceDeliveryType definition
Attribute Value
BrowseNamePaymentServiceDeliveryType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentMethodDeliverRequestM
0:HasComponentMethodCancelDeliverRequestM
0:HasComponentVariableTransactionProgressTransactionProgressDataType[]0:BaseDataVariableTypeM
Conformance Units
UnattendedRetail PaymentService

The TransactionProgress Variable is an array that contains the progress information of the payment of the delivery requests that are currently in execution or have recently been executed. The DataType is defined in 8.15. When the Status is changing, the entry of a delivery progress shall change. It is up to the implementation when the finished delivery requests get removed from the array. The simplest implementation just manages one entry and disallows a new delivery request while there is already one in execution and will keep the value there till a new delivery is started.

7.9.3 DeliverRequest Method

The DeliverRequest Method puts a deliver request into the payment service. The payment service checks the correct price, collects the payment and puts the deliver request into the corresponding machine engine (see 6.3.2.7 for details).

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and no deliver request was added to the corresponding machine engine.

The signature of this Method is specified below. Table 28 and Table 29 specify the Arguments and AddressSpace representation, respectively.

If no UserId or PaymentMode is provided, the payment service assumes appropriate values. If the user choses a different UserId or PaymentMode when initiating the payment, that effects the price, the transaction may fail. The entry of the transaction in the TransactionProgress Variable indicates the used UserId and PaymentMode. The UI may use this information to get the price for those, displays it to the user and if the user accepts, automatically triggers a new DeliverRequest.

Signature

	DeliverRequest (
	  [in]  0:String                   UserId,
	  [in]  0:String                   PaymentMode,
	  [in]  SelectionDataType          Selection,
	  [in]  PriceDataType              Price,
	  [out] 0:UInt64                   TransactionId,
	  [out] 0:Int32                    Status);
Table 28 - DeliverRequest Arguments
Argument Description
UserIdIdentification of the user. If the UserId is NULL or an empty string, the payment service selects the most appropriate UserId. If during payment a different UserId is used, which effects the price, the transaction may fail, or the price for the selected UserId is used.
PaymentMode

Payment mode to be used for the delivery. Supported payment modes of the payment service are defined in the PaymentModes of the PaymentService Object, using the PaymentModeId.

If the PaymentMode is NULL or an empty string, the payment service selects the most appropriate payment mode or potentially several payment modes. If during payment a different payment mode is used, which effects the price, the transaction will fail.

The special PaymentMode "NoCheck" indicates, that the Price is not checked, and the payment service will use a price depending on the payment mode used in the payment. This supports scenarios, where the user does not choose a payment mode before the deliver request and the UI typically displays the potentially different prices for all payment modes.

SelectionDefines what should be delivered, including the corresponding machine engine, the SelectionId, and the requested options.
PriceThe price expected to be paid for the selection.
TransactionIdA unique identifier given into the machine engine that uniquely identifies the deliver request. It shall be used as the TransactionId in the DeliveryRequests and the DeliveryProgress Variables. Shall not be interpreted when the Method returns with an UNCERTAIN StatusCode.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Machine engine referenced in MachineEngineProductInstanceUri not managed by payment service.

-2 = Invalid UserId

-3 = Invalid PaymentMode

-4 = Invalid Price

-5 = Invalid SelectionId

-6 = Invalid Option contained in Options

-7 = MachineEngine currently not available

-8 = PriceService currently not available

-9 = Cannot be executing because another payment is running

-10 = Invalid SelectionListVersion

-11 = Audit not running

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 29 - DeliverRequest AddressSpace definition
Attribute Value
BrowseNameDeliverRequest
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.9.4 CancelDeliverRequest Method

The CancelDeliverRequest Method requests to cancel a deliver request. The payment service checks if the deliver request can still be cancelled, and if yes, cancels the request, otherwise returns a corresponding Status argument.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and the TransactionId was not cancelled.

The signature of this Method is specified below. Table 28 and Table 29 specify the Arguments and AddressSpace representation, respectively.

Note: If a TransactionId is used inside a basket (see 7.10), it cannot be cancelled individually. A call of the Method with such a TransactionId should return a -2 Status.

Note: Once a TransactionId has been forwarded to the MachineEngine it is expected that it cannot be cancelled anymore and should return a -2 Status.

Signature

	CancelDeliverRequest (
	  [in] 0:UInt64                    TransactionId,
	  [out] 0:Int32                    Status);
Table 30 - CancelDeliverRequest Arguments
Argument Description
TransactionIdThe unique identifier of the deliver request to be cancelled.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Invalid TransactionId

-2 = Cancelling not possible anymore.

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 31 - CancelDeliverRequest AddressSpace definition
Attribute Value
BrowseNameCancelDeliverRequest
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.10 PaymentServiceBasketDeliveryType definition

7.10.1 Overview

The PaymentServiceBasketDeliveryType provides the functionality to trigger the delivery of a basket by the UI. It is formally defined in Table 32.

7.10.2 ObjectType definition

Table 32 - PaymentServiceBasketDeliveryType definition
Attribute Value
BrowseNamePaymentServiceBasketDeliveryType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the PaymentServiceDeliveryType
0:HasComponentMethodDeliverBasketRequestM
0:HasComponentMethodCancelDeliverBasketRequestM
0:HasComponentVariableBasketProgressBasketProgressDataType[]0:BaseDataVariableTypeM
Conformance Units
UnattendedRetail PaymentService BasketDelivery

The BasketProgress Variable is an array that contains the progress information of the payment of the basket delivery requests that are currently in execution or have recently been executed. The DataType is defined in 8.17. When the Status is changing, the entry of a delivery progress shall change. It is up to the implementation when the finished basket delivery requests get removed from the array. The simplest implementation just manages one entry and disallows a new basket delivery request while there is already one in execution.

Note that in addition to the BasketProgress the TransactionProgress provides the status of the individual entries of the basket.

7.10.3 DeliverBasketRequest Method

The DeliverBasketRequest Method receives a set of deliver requests and puts them into one or several machine engines, after checking the correct price and collecting the (see 6.3.2.9 for details).

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and no basket was created.

The signature of this Method is specified below. Table 33 and Table 34 specify the Arguments and AddressSpace representation, respectively.

If no UserId or PaymentMode is provided, the payment service assumes appropriate values. If the user choses a different UserId or PaymentMode when initiating the payment, that effects the price, the basket delivery may fail. The status of the basket indicates the used UserId and PaymentMode. The UI may use this information to get the price for those, displays it to the user and if the user accepts, automatically triggers a new DeliverRequest.

Signature

	DeliverBasketRequest (
	  [in]  0:String                   UserId,
	  [in]  0:String                   PaymentMode,
	  [in]  SelectionDataType[]        BasketContent,
	  [in]  PriceDataType              Price,
	  [out] 0:UInt64[]                 TransactionIds,
	  [out] 0:UInt64                   BasketId,
	  [out] 0:Int32                    Status);
Table 33 - DeliverBasketRequest Arguments
Argument Description
UserIdIdentification of the user. If the UserId is NULL or an empty string, the payment service selects the most appropriate UserId. If during payment a different UserId is used, which effects the price, the basket delivery may fail, or the price for the selected UserId is used.
PaymentMode

Payment mode to be used for the delivery. Supported payment modes of the payment service are defined in the PaymentModes of the PaymentService Object, using the PaymentModeId.

If the PaymentMode is NULL or an empty string, the payment service selects the most appropriate payment mode or potentially several payment modes. If during payment a different payment mode is used, which effects the price, the basket delivery will fail.

The special PaymentMode "NoCheck" indicates, that the Price is not checked, and the payment service will use a price depending on the payment mode used in the payment. This supports scenarios, where the user does not choose a payment mode before the deliver request and the UI typically displays the potentially different prices for all payment modes.

BasketContentDefines an array what should be delivered, each entry including the corresponding machine engine, the SelectionId, and the requested options. Shall have at least one entry.
PriceThe price expected to be paid for the basket.
TransactionIdsAn array of unique identifiers given into the machine engine that uniquely identifies each deliver request. It shall be used as the TransactionId in the DeliveryRequests and the DeliveryProgress Variables. The array shall have the same length as the BasketContent and reflects each selection of that array. Shall not be interpreted when the Method returns with an UNCERTAIN StatusCode.
BasketIdA unique identifier of the basket. Shall not be interpreted when the Method returns with an UNCERTAIN StatusCode.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Machine engine referenced in MachineEngineProductInstanceUri not managed by payment service.

-2 = Invalid UserId

-3 = Invalid PaymentMode

-4 = Invalid Price

-5 = Invalid SelectionId

-6 = Invalid Option contained in Options

-7 = MachineEngine currently not available

-8 = PriceService currently not available

-9 = Cannot be executing because another payment is running

-10 = Invalid SelectionListVersion

-11 = Audit not running

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 34 - DeliverBasketRequest AddressSpace definition
Attribute Value
BrowseNameDeliverBasketRequest
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.10.4 CancelDeliverBasketRequest Method

The CancelDeliverBasketRequest Method requests to cancel all deliver requests of a basket. The payment service checks if the basket can still be cancelled, and if yes, cancels all the requests of the basket, otherwise returns a corresponding Status argument.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and the BasketId was not cancelled.

The signature of this Method is specified below. Table 28 and Table 29 specify the Arguments and AddressSpace representation, respectively.

Signature

	CancelDeliverBasketRequest (
	  [in] 0:UInt64                    BasketId,
	  [out] 0:Int32                    Status);
Table 35 - CancelDeliverBasketRequest Arguments
Argument Description
BasketIdThe unique identifier of the basket to be cancelled.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Invalid BasketId

-2 = Cancelling not possible anymore.

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 36 - CancelDeliverBasketRequest AddressSpace definition
Attribute Value
BrowseNameCancelDeliverBasketRequest
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.11 PriceInformationType definition

7.11.1 Overview

The PriceInformationType provides information on selections with specific Options and baskets. It is provided by the payment service and the price service. It is formally defined in Table 37.

7.11.2 ObjectType definition

Table 37 - PriceInformationType definition
Attribute Value
BrowseNamePriceInformationType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentMethodGetPriceForSelectionsM
0:HasComponentMethodGetPriceForOneSelectionM
0:HasComponentMethodGetPriceForBasketO
0:GeneratesEventObjectTypePriceChangeEventType
Conformance Units
UnattendedRetail PaymentService
UnattendedRetail PriceService

Instances of the PriceInformationType will generate Events of PriceChangeEventType, when the prices provided with one of the Methods may have changed, for example based on the time, different base prices, etc. Clients currently using the price information (e.g., for display) should subscribe for these Events and call the Methods again, after receiving the Event.

7.11.3 GetPriceForSelections Method

The GetPriceForSelections Method asks for the current price of all selections of a machine engine of the Vending Machine. It takes indications (UserId, PaymentMode) as input that influence the price. The output contains the price information including price information per Option.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and the returned PriceInformationList shall not be interpreted.

The signature of this Method is specified below. Table 38 and Table 39 specify the Arguments and AddressSpace representation, respectively.

Signature

	GetPriceForSelections (
	  [in]   0:String                   UserId,
	  [in]   0:String                   PaymentMode,
	  [in]   0:UriString                MachineEngineProductInstanceUri,
	  [in]   0:SemanticVersionString    SelectionListVersion,
	  [out]  SelectionPriceDataType[]   PriceInformationList,
	  [out]  0:Int32                    Status);
Table 38 - GetPriceForSelections Arguments
Argument Description
UserIdThe UserId context for which the provided price is valid.
PaymentMode

The payment mode that will be used for the payment, which may influence the price. Supported payment modes of the payment service are defined in the PaymentModes of the PaymentService Object, using the PaymentModeId.

It is not allowed to provide a NULL or empty string or to use the PaymentMode "NoCheck".

MachineEngineProductInstanceUriThe machine engine for which the price information shall be provided.
SelectionListVersionProvides the version of the selections as defined in the Capabilities. Used as context to interpret the Selections and Options correctly.
PriceInformationListThe price per selection available for the machine engine. Shall contain exactly one entry for all SelectionIds currently supported by the machine engine. Shall not be interpreted when the Method returns with an UNCERTAIN StatusCode.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Machine engine referenced in MachineEngineProductInstanceUri not managed by payment service or price service.

-2 = Invalid UserId

-3 = Invalid PaymentMode

-4 = Invalid SelectionListVersion

-5 = Price service not available

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 39 - GetPriceForSelections AddressSpace definition
Attribute Value
BrowseNameGetPriceForSelections
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.11.4 GetPriceForOneSelection Method

The GetPriceForOneSelection Method asks for the current price of one selection of the Vending Machine. It takes indications as input that influence the price. The output contains the price information.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and the returned PriceInformation shall not be interpreted.

The signature of this Method is specified below. Table 40 and Table 41 specify the Arguments and AddressSpace representation, respectively.

Signature

	GetPriceForOneSelection (
	  [in]   0:String                   UserId,
	  [in]   0:String                   PaymentMode,
	  [in]   SelectionDataType          Selection,
	  [out]  PriceAndContextDataType    PriceInformation,
	  [out]  0:Int32                    Status);
Table 40 - GetPriceForOneSelection Arguments
Argument Description
UserIdThe UserId context for which the provided price is valid.
PaymentMode

The payment mode that will be used for the payment, which may influence the price. Supported payment modes of the payment service are defined in the PaymentModes of the PaymentService Object, using the PaymentModeId.

It is not allowed to provide a NULL or empty string or to use the PaymentMode "NoCheck".

SelectionDefines for what selection the price should be provided, including the corresponding machine engine, the SelectionId, and the requested options.
PriceInformationThe price for the SelectionId. Shall not be interpreted when the Method returns with an UNCERTAIN StatusCode.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Machine engine referenced in MachineEngineProductInstanceUri not managed by payment service.

-2 = Invalid UserId

-3 = Invalid PaymentMode

-4 = Invalid SelectionId

-5 = Invalid Option contained in Options

-6 = Invalid SelectionListVersion

-7 = Price service not available

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 41 - GetPriceForSelections AddressSpace definition
Attribute Value
BrowseNameGetPriceForOneSelection
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.11.5 GetPriceForBasket Method

The GetPriceForBasket Method asks for the current price of a basket of selections of the Vending Machine. It takes indications as input that influence the price. The output contains the price information.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed, and the returned OverallPriceInformation and PriceInformationList shall not be interpreted.

The signature of this Method is specified below. Table 42 and Table 43 specify the Arguments and AddressSpace representation, respectively.

Signature

	GetPriceForBasket (
	  [in]   0:String                   UserId,
	  [in]   0:String                   PaymentMode,
	  [in]   SelectionDataType[]        BasketContent,
	  [out]  PriceDataType              OverallPriceInformation,
	  [out]  PriceAndContextDataType[]  PriceInformationList,
	  [out]  0:Int32                    Status);
Table 42 - GetPriceForBasket Arguments
Argument Description
UserIdThe UserId context for which the provided price is valid.
PaymentMode

The payment mode that will be used for the payment, which may influence the price. Supported payment modes of the payment service are defined in the PaymentModes of the PaymentService Object, using the PaymentModeId.

It is not allowed to provide a NULL or empty string or to use the PaymentMode "NoCheck".

BasketContentThe content of the basket, for which the price is asked for.
OverallPriceInformationThe overall price for the BasketContent. Shall not be interpreted when the Method returns with an UNCERTAIN StatusCode.
PriceInformationListThe price of each individual content of the basket. The array shall have the same size as the BasketContent array and each entry represents the price for the entry at the same index of the BasketContent. The OverallPriceInformation shall be the sum of each entry of the PriceInformationList. Shall not be interpreted when the Method returns with an UNCERTAIN StatusCode.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Machine engine referenced in MachineEngineProductInstanceUri not managed by payment service.

-2 = Invalid UserId

-3 = Invalid PaymentMode

-4 = Invalid SelectionId

-5 = Invalid Option contained in Options

-6 = Invalid SelectionListVersion

-6 = Price service not available

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 43 - GetPriceForBasket AddressSpace definition
Attribute Value
BrowseNameGetPriceForBasket
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.12 PriceChangeEventType definition

7.12.1 Overview

The PriceChangeEventType describes Events that are fired to indicate a change in prices. It is formally defined in Table 44.

7.12.2 ObjectType definition

Table 44 - PriceChangeEventType definition
Attribute Value
BrowseNamePriceChangeEventType
IsAbstractTrue
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseEventType
0:HasPropertyVariableMachineEngineProductInstanceUri0:UriString0:PropertyTypeM
Conformance Units
UnattendedRetail PaymentService
UnattendedRetail PriceService

The Properties of the 0:BaseEventType shall be used according to their definitions. This specification does not define any further restrictions on the usage.

The MachineEngineProductInstanceUri contains the machine engine, for which the prices have changed. Clients should use this to filter only for those price change events they are interested in.

7.13 PaymentModesType definition

7.13.1 Overview

The PaymentModesType provides all payment modes of a payment service. It is formally defined in Table 45.

7.13.2 ObjectType definition

Table 45 - PaymentModesType definition
Attribute Value
BrowseNamePaymentModesType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject<PaymentMode>PaymentModeTypeMP
Conformance Units
UnattendedRetail PaymentService

The <PaymentMode> Object indicates that Objects of PaymentModesType shall have one or more Objects of PaymentModeType, each representing one payment mode (see 7.14 for details).

7.14 PaymentModeType definition

7.14.1 Overview

The PaymentModeType provides information on selections with specific Options and baskets. It is provided by the payment service and the price service. It is formally defined in Table 46.

7.14.2 ObjectType definition

Table 46 - PaymentModeType definition
Attribute Value
BrowseNamePaymentModeType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentVariableStatusPaymentModeOrDeviceStatusEnum0:BaseDataVariableTypeM
0:HasComponentVariablePaymentModeId0:String0:BaseDataVariableTypeM
0:HasComponentVariableCurrentlyUsedUserId0:String0:BaseDataVariableTypeO
0:HasComponentVariableAvailableCreditPriceDataType0:BaseDataVariableTypeM
0:HasComponentMethodEscrowRefundO
Conformance Units
UnattendedRetail PaymentService

The Status represents the current status of the payment system supporting the payment mode (see 8.21 for details).

The PaymentModeId represents a unique identification of the payment mode, that is used in the DeliverRequest Method of the Delivery Object. It is recommended, that this string is also used for the text part of the DisplayName Attribute of the Object for the default locale. The PaymentMode "NoCheck" has a special meaning and shall not be used as PaymentModeId. The recommended PaymentModeId values are: "Cash" and "Cashless".

The optional CurrentlyUsedUserId provides information about the UserId currently used in the payment mode (e.g., when a customer card is used).

The optional AvailableCredit Variable contains the currently managed amount (e.g., coins already added to the machine, pre-charged credit card, etc.).

7.14.3 EscrowRefund Method

The optional EscrowRefund Method is provided when the payment mode contains an escrow area (e.g., a special area to keep coins). When called, the escrow gets returned.

The signature of this Method is specified below. Table 47 and Table 48 specify the Arguments and AddressSpace representation, respectively.

Signature

	EscrowRefund ();
Table 47 - EscrowRefund Arguments
Argument Description

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 48 - EscrowRefund AddressSpace definition
Attribute Value
BrowseNameEscrowRefund
References NodeClass BrowseName DataType TypeDefinition ModellingRule

7.15 PaymentDevicesType definition

7.15.1 Overview

The PaymentDevicesType provides all payment devices of a payment service. It is formally defined in Table 49.

7.15.2 ObjectType definition

Table 49 - PaymentDevicesType definition
Attribute Value
BrowseNamePaymentDevicesType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject<PaymentDevice>PaymentDeviceTypeMP
Conformance Units
UnattendedRetail PaymentService

The <PaymentDevice> Object indicates that Objects of PaymentDevicesType shall have one or more Objects of PaymentDeviceType, each representing one payment device (see 7.16 for details).

7.16 PaymentDeviceType definition

7.16.1 Overview

The PaymentDeviceType provides information about a payment device. It is formally defined in Table 50.

7.16.2 ObjectType definition

Table 50 - PaymentDeviceType definition
Attribute Value
BrowseNamePaymentDeviceType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject2:IdentificationIdentificationTypeM
0:HasPropertyVariableIsEmulatedBoolean0:PropertyTypeM
0:HasComponentVariableStatusPaymentModeOrDeviceStatusEnum0:BaseDataVariableTypeM
0:HasPropertyVariableSupportedAssetListPriceDataType[]0:PropertyTypeO
0:HasPropertyVariableSupportedAssetListVersion0:SemanticVersionString0:PropertyTypeO
0:HasPropertyVariableSlotConfigurationListSlotConfigurationDataType[]0:PropertyTypeO
0:GeneratesEventObjectTypeVendingAuditEventType
Conformance Units
UnattendedRetail PaymentService
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill
UnattendedRetail PaymentDevice Cashless

The 2:Identification Object provides Properties describing the identification of the payment device (see 7.2 for details).

The string-part of the DisplayName of Objects of this ObjectType shall be the 2:ProductInstanceUri defined in the 2:Identification Object. This simplifies identifying in the Events of the VendingAuditEventType which payment device has generated the Event, as the 0:SourceName of the Event is the string-part of the DisplayName.

The mandatory Property IsEmulated indicates if the Object is just an emulation. When set to "true", it indicates that the Object of PaymentDeviceType is just an emulation representing the payment device, and the payment device itself provides an OPC UA Server with an instance of PaymentDeviceType. In that case, no Events of VendingAuditEventType are generated, and consumers of those Events need to subscribe to the OPC UA Server of the payment device for those Events. This is used in a payment service providing information about the payment device, but the payment device has its own OPC UA Server. When set to "false", it indicates that this Object is not emulated and generates Events of VendingAuditEventType. This is used in a payment service where the payment device does not have an OPC UA Server and in the payment device if the payment device has an OPC UA Server. In 6.2.2 more descriptive text is given.

The mandatory Status represents the current status of the payment device (see 8.21 for details). A payment device taking physical assets of value (e.g., coins, bills, and tokens) provides the information about the physical assets it supports in the SupportedAssetList Property. The list shall be in ascending order by the Amount, not considering the Currency. If no physical assets of value are taken, the optional SupportedAssetList shall not be provided. For coin changers the SupportedAssetList is the list of accepted coins and tokens, as for bill validators is the list of bills and tokens handled.

Note: Tokens are managed the same way as cash, but the Currency of the PriceDataType shall use 000 as NumericCode and 0 as Exponent.

The SupportedAssetListVersion provides the current version of the SupportedAssetList. Clients may cache the SupportedAssetList and only access it after reconnect, if the SupportedAssetListVersion has changed. Therefore, each change in the SupportedAssetList shall change the SupportedAssetListVersion. The same SupportedAssetListVersion shall only be used if the SupportedAssetList is identical to the content of the previous SupportedAssetList using the same SupportedAssetListVersion.

A payment device taking physical assets of value (e.g., coins, bills, and tokens) may have two places where to store those assets.

The cashbox (coins) or stacker (bills) stores the assets and will be emptied by the technician. Typically, the amount of value in the cashbox or stacker is not known. A VendingAuditEvent (see 7.27) gets generated when a new value is added to the cashbox or stacker. Therefore, no information on the amount of value in the cashbox or stacker is provided by the PaymentDeviceType.

The tube (for coins) or recycler (for bills) buffers the assets, so that they can be returned as change, payback or when the user cancels the order or requests a refund. Those buffers have different slots to store different types of coins, bills, or tokens. The information about the general setup of those slots is provided in the SlotConfigurationList. Each entry of the list of SlotConfigurationDataType (see 8.20) consists of two indexes, the first one identifying the slot and the second the asset going to the slot as an index into the SupportedAssetList. Several entries of the SupportedAssetList may be assigned to the same slot index. In this case, the Amount and Currency shall be identical. Several slot indexes may have the same entries of the SupportedAssetList assigned to them. The slot indexes shall start with 0 and increase without interruptions (0, 1, 2, 3, …). As special index -1 is used in the SlotConfigurationList to indicate that the referenced entry of the SupportedAssetList is directly moved into the cashbox / stacker. The SlotConfigurationList shall have at least one entry for each entry of the SupportedAssetList.

In the following, an example is given.

SupportedAssetList = { (10, € cent), (50, € cent), (50, € cent), (100, € cent), (100, € cent) }

SlotConfigurationList = {(-1,4), (0,0), (1,0), (2,1), (2,2), (3,3), (4,3) }

In the example, the machine accepts coins of 10, 50, and 100 € cent. It distinguishes between two different types of 50 and 100 € cent coins.

The buffer contains 5 slots, the first two (index 0 and 1) taking 10 € cent coins, another one (index 2) taking all 50 € cent coins, and two more taking 100 € cent coins of one type, whereas the second one never goes into the buffer but always directly into the cashbox (index -1, first entry in the SlotConfigurationList).

An Object emulating a payment device (IsEmulated = "true") should not provide the SupportedAssetList, SupportedAssetListVersion, and SlotConfigurationList.

An Object not emulating a payment device (IsEmulated = "false") and taking physical assets of value (e.g., coins, bills, and tokens) shall provide the SupportedAssetList, the SupportedAssetListVersion and the SlotConfigurationList.

Remark: The SupportedAssetList and SlotConfigurationList are needed to interpret Events of VendingAuditEventType having a SlotIndex.

The GeneratesEvent Reference to the VendingAuditEventType indicates that instances may generate Events of that EventType (see 7.27 for details).

7.17 StandalonePaymentDeviceType definition

7.17.1 Overview

The abstract StandalonePaymentDeviceType provides information about a payment device having its own OPC UA Server. It is formally defined in Table 51.

7.17.2 ObjectType definition

Table 51 - StandalonePaymentDeviceType definition
Attribute Value
BrowseNameStandalonePaymentDeviceType
IsAbstractTrue
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the PaymentDeviceType
0:HasComponentObjectConfigurationBaseConfigurationTypeM
0:HasComponentObjectComponentsBaseComponentsTypeO
0:GeneratesEventObjectTypeConfigurationChangedEventType
Conformance Units
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill
UnattendedRetail PaymentDevice Cashless

The Configuration Object provides the configuration information of the payment device (see 7.3 for details). It may provide the default currency used in the payment device.

The optional Components Object is the entry point to information about subcomponents of the payment device (see 7.4 for details).

The GeneratesEvent Reference to the ConfigurationChangedEventType indicates that an instance may generate Events of that EventType (see 7.29). Such an Event shall be generated when Objects gets added or removed from the Components Object, or when the values of Variables of the Configuration change. Multiple changes may be reported by a single Event.

7.18 PaymentCashDeviceType definition

7.18.1 Overview

The abstract PaymentCashDeviceType provides information about a payment device taking cash. It is formally defined in Table 52.

7.18.2 ObjectType definition

Table 52 - PaymentCashDeviceType definition
Attribute Value
BrowseNamePaymentCashDeviceType
IsAbstractTrue
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the StandalonePaymentDeviceType
0:HasPropertyVariableSupportedAssetListPriceDataType[]0:PropertyTypeM
0:HasPropertyVariableSupportedAssetListVersion0:SemanticVersionString0:PropertyTypeM
0:HasPropertyVariableSlotConfigurationListSlotConfigurationDataType[]0:PropertyTypeM
0:HasComponentVariableCurrentSlotContentList0:UInt32[]0:BaseDataVariableTypeO
0:HasComponentVariableAssetConfigurationListAssetConfigurationEnum[]0:BaseDataVariableTypeM
0:HasComponentMethodChangeAssetConfigurationListM
0:HasComponentVariablePayoutStatusPayoutStatusEnum0:BaseDataVariableTypeO
0:HasComponentMethodPayoutByValueO
0:HasComponentMethodPayoutBySupportedAssetListO
0:HasComponentVariableCurrentAvailableValuePriceDataType0:BaseDataVariableTypeM
0:HasComponentMethodConsumeAvailableValueM
Conformance Units
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill

The inherited Variables SupportedAssetList, SupportedAssetListVersion, and SlotConfigurationList become mandatory in the PaymentCashDeviceType.

In case of the buffer (see 7.16.2), most payment devices maintain the information about the current amount stored in the buffer. If the payment device supports this information, it shall be provided in the CurrentSlotContentList Property. This list contains for each index representing a slot the number of physical assets currently in the slot. The list shall have the same size as the maximum slot index of the SlotConfigurationList.

In the following, an example is given, extending the example of 7.16.2.

SupportedAssetList = { (10, € cent), (50, € cent), (50, € cent), (100, € cent), (100, € cent) }

SlotConfigurationList = { (-1,4), (0,0), (1,0), (2,1), (2,2), (3,3), (4,3) }

CurrentSlotContentList = { 10, 3, 15, 7, 0 }

An explanation of SupportedAssetList and SlotConfigurationList can be found in 7.16.2.

The CurrentSlotContentList indicates, that there are 10+3 10 € cent coins, 15 50 € cent coins, and 7 100€ cent coins in the buffer.

The CurrentSlotContentList Variable value is the best approximation for the slot content, and may not be the exact number of assets in each slot, the behaviour can be manufacturer depended.

The mandatory AssetConfigurationList Variable is an array of AssetConfigurationEnum. The DataType is defined in 8.24. It shall have the same length as the SupportedAssetList. Each entry of the array defines what the payment device shall do with an asset as defined in the corresponding entry of the SupportedAssetList when inserted into the payment device. The AssetConfigurationList can be changed by the ChangeAssetConfigurationList Method defined in 7.18.3.

The optional PayoutStatus Variable indicates the status of a payout, requested via the PayoutByValue (see 7.18.4) or PayoutBySupportedAssetList (see 7.18.5) Method call. The DataType is defined in 8.25. The CurrentSlotContentList Variable needs to be updated when a payout occurs. If a payout was not successful, checking the CurrentSlotContentList indicates what assets have been paid out. The CurrentSlotContentList Variable can also be monitored to identify in case of a successful payout, what assets have been paid out.

The mandatory CurrentAvailableValue Variable indicates the amount of money currently available in the payment cash device for deliveries. When a user inserts an asset (e.g., a coin) that is accepted by the payment cash device, the CurrentAvailableValue increases. Typically, the CurrentAvailableValue is initialized to 0 when the payment cash device starts. When the ConsumeAvailableValue Method is called (see 7.18.6), the CurrentAvailableValue decreases according to the input parameters of the Method. Any payout operation (PayoutByValue or PayoutBySupportedAssetList Methods) does not affect the CurrentAvailableValue.

7.18.3 ChangeAssetConfigurationList Method

The ChangeAssetConfigurationList Method changes the configuration of the payment device reflected in the AssetConfigurationList.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, the AssetConfigurationList shall reflect the new configuration.

The signature of this Method is specified below. Table 53 and Table 54 specify the Arguments and AddressSpace representation, respectively.

Signature

	ChangeAssetConfigurationList (
	  [in]   AssetConfigurationEnum[]   NewAssetConfigurationList,
	  [out]  0:Int32                    Status);
Table 53 - ChangeAssetConfigurationList Arguments
Argument Description
NewAssetConfigurationListContains the new configuration to be configured. The resulting configuration may not be identical to this input argument as the configuration may be adjusted as described in the AssetConfigurationEnum.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Invalid length of NewAssetConfigurationList

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 54 - ChangeAssetConfigurationList AddressSpace definition
Attribute Value
BrowseNameChangeAssetConfigurationList
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.18.4 PayoutByValue Method

The PayoutByValue Method triggers a payout.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does not indicate, that the payout has been completed successful. Clients need to access the PayoutStatus Variable to get the information, if the payout gets successfully finished.

The signature of this Method is specified below. Table 55 and Table 56 specify the Arguments and AddressSpace representation, respectively.

Signature

	PayoutByValue (
	  [in]   PriceDataType              PayoutValue,
	  [out]  0:Int32                    Status);
Table 55 - PayoutByValue Arguments
Argument Description
PayoutValueThe value to be paid out.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Cannot trigger payout as another payout is ongoing

-2 = Cannot trigger payout, not enough assets left

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 56 - PayoutByValue AddressSpace definition
Attribute Value
BrowseNamePayoutByValue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.18.5 PayoutBySupportedAssetList Method

The PayoutBySupportedAssetList Method triggers a payout.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does not indicate, that the payout has been completed successful. Clients need to access the PayoutStatus Variable to get the information, if the payout gets successfully finished.

The signature of this Method is specified below. Table 57 and Table 58 specify the Arguments and AddressSpace representation, respectively.

Signature

	PayoutBySupportedAssetList (
	  [in]   0:UInt32[]             NumberOfAssetsBySupportedAssetList,
	  [out]  0:Int32                Status);
Table 57 - PayoutBySupportedAssetList Arguments
Argument Description
NumberOfAssetsBySupportedAssetListFor each entry of the SupportedAssetList, the number of assets to be paid out.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Cannot trigger payout as another payout is ongoing

-2 = Cannot trigger payout, not enough assets left

-3 = Invalid length of NumberOfAssetsBySupportedAssetList

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 58 - PayoutBySupportedAssetList AddressSpace definition
Attribute Value
BrowseNamePayoutBySupportedAssetList
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.18.6 ConsumeAvailableValue Method

The ConsumeAvailableValue Method consumes part of the available money provided in the CurrentAvailableValue Variable.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does indicate, that the CurrentAvailableValue Variable has been decreased.

The signature of this Method is specified below. Table 59 and Table 60 specify the Arguments and AddressSpace representation, respectively.

Signature

	ConsumeAvailableValue (
	  [in]   PriceDataType              ValueToConsume,
	  [out]  0:Int32                    Status);
Table 59 - ConsumeAvailableValue Arguments
Argument Description
ValueToConsumeFor each entry of the SupportedAssetList, the number of assets to be paid out.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Not enough value to consume available

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 60 - ConsumeAvailableValue AddressSpace definition
Attribute Value
BrowseNameConsumeAvailableValue
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.19 PaymentBillDeviceType definition

7.19.1 Overview

The PaymentBillDeviceType provides information about a payment device taking bills or token. It is formally defined in Table 61.

7.19.2 ObjectType definition

Table 61 - PaymentBillDeviceType definition
Attribute Value
BrowseNamePaymentBillDeviceType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the PaymentCashDeviceType
0:HasComponentMethodCancelPayoutM
0:HasComponentVariableCurrentValueInEscrow0:UInt320:BaseDataVariableTypeM
0:HasComponentMethodHandleBillFromEscrowM
Conformance Units
UnattendedRetail PaymentDevice Bill

The CurrentValueInEscrow Variable indicates the asset currently in the escrow by pointing to the index of the SupportedAssetList.

7.19.3 CancelPayout Method

The CancelPayout Method cancels the current payout.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it indicates, that the current payout has been cancelled and will not continue.

The signature of this Method is specified below. Table 62 and Table 63 specify the Arguments and AddressSpace representation, respectively.

Signature

	CancelPayout (
	  [out]  0:Int32                    Status);
Table 62 - CancelPayout Arguments
Argument Description
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = No payout ongoing that can be cancelled

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 63 - CancelPayout AddressSpace definition
Attribute Value
BrowseNameCancelPayout
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.19.4 HandleBillFromEscrow Method

The HandleBillFromEscrow Method defines what the payment device shall do with the bill or token currently stored in the escrow.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does not indicate, that the bill or token was already processed completely from the escrow. Clients need to access the CurrentValueInEscrow Variable to get the information, if the bill or token has successfully been moved.

The signature of this Method is specified below. Table 64 and Table 65 specify the Arguments and AddressSpace representation, respectively.

Signature

	HandleBillFromEscrow (
	  [in]   0:Boolean                  AcceptBill,
	  [out]  0:Int32                    Status);
Table 64 - HandleBillFromEscrow Arguments
Argument Description
AcceptBillIf true, the current bill or token in escrow (see Variable CurrentValueInEscrow) gets accepted, if false, it gets rejected. The place where the bill or token is moved to in case of it gets accepted is defined in the AssetConfigurationList.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Currently no bill in escrow

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 65 - HandleBillFromEscrow AddressSpace definition
Attribute Value
BrowseNameHandleBillFromEscrow
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.20 PaymentCoinDeviceType definition

7.20.1 Overview

The PaymentCoinDeviceType provides information about a payment device taking coins or token. It is formally defined in Table 66.

7.20.2 ObjectType definition

Table 66 - PaymentCoinDeviceType definition
Attribute Value
BrowseNamePaymentCoinDeviceType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the PaymentCashDeviceType
Conformance Units
UnattendedRetail PaymentDevice Coin

This ObjectType does not define any additional InstanceDeclarations.

7.21 PaymentCashlessDeviceType definition

7.21.1 Overview

The PaymentCashlessDeviceType provides information about a cashless payment taking for example credit cards. It is formally defined in Table 67.

7.21.2 ObjectType definition

Table 67 - PaymentCashlessDeviceType definition
Attribute Value
BrowseNamePaymentCashlessDeviceType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the StandalonePaymentDeviceType
0:HasComponentVariableUserId0:String0:BaseDataVariableTypeM
0:HasPropertyVariableMaxRechargePriceDataType0:PropertyTypeM
0:HasComponentVariableCurrentContentOnCardPriceDataType0:BaseDataVariableTypeM
0:HasComponentVariableApproveStatusOperationStatusEnum0:BaseDataVariableTypeM
0:HasComponentMethodApproveM
0:HasComponentMethodCancelApprovalM
0:HasComponentVariableRechargeStatusOperationStatusEnum0:BaseDataVariableTypeO
0:HasComponentMethodRechargeO
0:HasComponentVariableRefundLastStatusOperationStatusEnum0:BaseDataVariableTypeM
0:HasComponentMethodRefundLastM
0:HasComponentVariableIsEnabled0:Boolean0:BaseDataVariableTypeM
0:HasComponentMethodEnableOrDisableM
7Conformance Units
UnattendedRetail PaymentDevice Cashless

The UserId Variable indicates the UserId associated with the card or other identification used for the cashless payment device. If the UserId is null or an empty string, it implies that there is currently nothing associated to the cashless payment device and neither money can be taken nor recharged.

The MaxRecharge Variable indicates how much money can be recharged to the account of the current UserId. Null or an amount of 0 indicates that no recharge functionality is available.

The CurrentContentOnCard Variable indicates how much money can currently be used. This may be the amount on a rechargeable card, or a fixed value already pre-charged from a credit card. A null value indicates that the amount is unknown. When no UserId is available, the CurrentContentOnCard shall be null.

The ApproveStatus Variable indicates the status of the last call of the Approve Method (see 7.21.4). The DataType is defined in 8.26. The CancelApproval Method (see 7.21.5) may be called while the approval is still ongoing to cancel the approval and thereby effecting the ApproveStatus.

The optional RechargeStatus Variable indicates the status of the last call of the optional Recharge Method (see 7.21.6). The DataType is defined in 8.26.

The RefundLastStatus Variable indicates the status of the last call of the RefundLast Method (see 7.21.7). The DataType is defined in 8.26.

The IsEnabled Variable indicates if the cashless payment device is enabled ("true") or disabled ("false"). When the payment device is disabled, the Approve, Recharge and RefundLast Methods will fail. IsEnabled can be changed by calling the EnableOrDisable Method.

7.21.3 Relation to MDB / ICP state for cashless devices

MDB / ICP defines several states for cashless devices. How to receive this information from the PaymentCashlessDeviceType is described in the following.

Table 68 - Relation to MDB / ICP states
MDB / ICP stateStatus
(Available, Offline, OutOfOrder)
IsEnabled
(true, false)
UserId
(empty, value)
ApproveStatus
(Idle, Ongoing, SuccessfullyFinished, Failed)
RechargeStatus
(Idle, Ongoing, SuccessfullyFinished, Failed)
RefundLastStatus
(Idle, Ongoing, SuccessfullyFinished, Failed)
InactiveOffline, OutOfOrder-----
DisabledAvailablefalse----
EnabledAvailabletrueempty---
Session IdleAvailabletruevalueNot OngoingNot OngoingNot Ongoing
VendAvailabletruevalueOngoingNot OngoingNot Ongoing
RevalueAvailabletruevalueNot OngoingOne of them in Ongoing, the other not Ongoing.
Negative VendNot addressed in this version of the specification

7.21.4 Approve Method

The Approve Method is charging money from an account associated to the current UserId. It may also check if it is allowed to sell the selection to the user (e.g., based on age restrictions).

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does not indicate, that the approve has been completed successful. Clients need to access the ApproveStatus Variable to get the information, if the approve successfully finished.

The signature of this Method is specified below. Table 69 and Table 70 specify the Arguments and AddressSpace representation, respectively.

Signature

	Approve (
	  [in]   PriceDataType            Value,
	  [in]   0:String                 UserId,
	  [in]   SelectionDataType        Selection,
	  [out]  0:Int32                    Status);
Table 69 - Approve Arguments
Argument Description
ValueThe value to be approved and charged from the account of the UserId.
UserIdThe UserId where the Value should be charged from the associated account.
SelectionSelection used to be bought. May be needed to check if selling the selection to the user is allowed (e.g., due to age restrictions).
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Invalid UserId - UserId unknown

-2 = Invalid UserId - Not the current UserId

-3 = Selection unknown

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 70 - Approve AddressSpace definition
Attribute Value
BrowseNameApprove
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.21.5 CancelApproval Method

The CancelApproval Method is cancelling the current approval triggered by calling the Approve Method.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

The Method shall return an Uncertain StatusCode and the Status -1 when the ApproveStatus is not in "Ongoing" while the Method gets executed.

If the Method returns successful, it does not indicate, that the cancelling has been completed successful. Clients need to access the ApproveStatus Variable to get the information, if the cancelling of the approval has successfully finished.

The signature of this Method is specified below. Table 71 and Table 72 specify the Arguments and AddressSpace representation, respectively.

Signature

	CancelApproval (
	  [out]  0:Int32                    Status);
Table 71 - CancelApproval Arguments
Argument Description
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Approval in a state that cannot be cancelled anymore

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 72 - CancelApproval AddressSpace definition
Attribute Value
BrowseNameCancelApproval
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.21.6 Recharge Method

The Recharge Method is recharging money to an account associated to the current UserId.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does not indicate, that the recharge has been completed successful. Clients need to access the RechargeStatus Variable to get the information, if the recharge successfully finished.

The signature of this Method is specified below. Table 73 and Table 74 specify the Arguments and AddressSpace representation, respectively.

Signature

	Recharge (
	  [in]   PriceDataType              Value,
	  [in]   0:String                   UserId,
	  [out]  0:Int32                    Status);
Table 73 - Recharge Arguments
Argument Description
ValueThe value to recharged to the account of the UserId.
UserIdThe UserId where the Value should be recharged to the associated account.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Invalid UserId - UserId unknown

-2 = Invalid UserId - Not the current UserId

-3 = SelectionId unknown

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 74 - Recharge AddressSpace definition
Attribute Value
BrowseNameApprove
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.21.7 RefundLast Method

The RefundLast Method refunding the last successful operation executed with Approve. This is needed, for example, when a delivery cannot be executed but was already charged.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does not indicate, that the approve has been completed successful. Clients need to access the RefundLastStatus Variable to get the information, if the approve successfully finished.

The signature of this Method is specified below. Table 75 and Table 76 specify the Arguments and AddressSpace representation, respectively.

Signature

	RefundLast (
	  [out]  0:Int32                    Status);
Table 75 - RefundLast Arguments
Argument Description
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = There was no previous successful approve execution

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 76 - RefundLast AddressSpace definition
Attribute Value
BrowseNameRefundLast
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.21.8 EnableOrDisable Method

The EnableOrDisable Method changing the state of the payment device either to be disabled or enabled.

If the execution of the Method cannot be done due to some application logic, the Method should return an Uncertain StatusCode and provide details of the failure in the Status output Argument. When the Method returns an Uncertain StatusCode, the Method is considered to be failed.

If the Method returns successful, it does not indicate, that the state change has been completed successful. Clients need to access the IsEnabled Variable to get the information, if the change successfully finished.

The signature of this Method is specified below. Table 77 and Table 78 specify the Arguments and AddressSpace representation, respectively.

Signature

	EnableOrDisable (
	  [in]   0:Boolean                  Enable,
	  [out]  0:Int32                    Status);
Table 77 - EnableOrDisable Arguments
Argument Description
EnableIndicates the new value to be set. False means to disable and true to enable the payment device.
Status

Status of the execution of the method. If issues occurred during execution.

0 = Execution was successful.

-1 = Already in requested state

-2 = Cannot disable, currently internal operation ongoing

Vendors may return a vendor specific status starting with number -16 or smaller.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Table 78 - EnableOrDisable AddressSpace definition
Attribute Value
BrowseNameApprove
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory
0:HasPropertyVariable0:OutputArguments0:Argument[] 0:PropertyType0:Mandatory

7.22 PaymentServiceStatusType definition

7.22.1 Overview

The PaymentServiceStatusType provides status information of the payment service and a mechanism to change the status from an OPC UA Client. It is formally defined in Table 79.

7.22.2 ObjectType definition

Table 79 - PaymentServiceStatusType definition
Attribute Value
BrowseNamePaymentServiceStatusType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentMethodRequestStatusChangeM
0:HasComponentVariableStatusPaymentServiceStatusEnum0:BaseDataVariableTypeM
Conformance Units
UnattendedRetail PaymentService

The Status Variable represents the current status of the payment service. Depending on the status, the payment service will not provide its functionality like requesting a delivery. The DataType is defined in 8.22.

7.22.3 RequestStatusChange Method

The RequestStatusChange Method requests a status change of the payment service. The signature of this Method is specified below. Table 80 and Table 81 specify the Arguments and AddressSpace representation, respectively.

Signature

	RequestStatusChange (
	  [in]  PaymentServiceStatusEnum    RequestedState);
Table 80 - RequestStatusChange Arguments
Argument Description
RequestedStateDefines the state to be switched to. The allowed states are: ExternallyStopped and Available.

Method Result Codes (defined in Call Service)

Result Code Description
Bad_UserAccessDeniedSee OPC 10000-4 for a general description.
Bad_InvalidStateSee OPC 10000-4 for a general description.
Table 81 - RequestStatusChange AddressSpace definition
Attribute Value
BrowseNameRequestStatusChange
References NodeClass BrowseName DataType TypeDefinition ModellingRule
0:HasPropertyVariable0:InputArguments0:Argument[] 0:PropertyType0:Mandatory

7.23 UIType definition

7.23.1 Overview

The UIType provides the interface to access the UI. It is used by other components like the audit collect. A more detailed overview is given in 6.2.4. It is formally defined in Table 82.

7.23.2 ObjectType definition

Table 82 - UIType definition
Attribute Value
BrowseNameUIType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject2:IdentificationIdentificationTypeM
0:HasComponentObjectConfigurationBaseConfigurationTypeM
0:HasComponentObjectComponentsBaseComponentsTypeO
0:GeneratesEventObjectTypeVendingBaseAuditEventType
0:GeneratesEventObjectTypeConfigurationChangedEventType
Conformance Units
UnattendedRetail UI

The 2:Identification Object provides Properties describing the identification of the UI (see 7.2 for details).

The Configuration Object provides the configuration information of the UI (see 7.3 for details).

The optional Components Object is the entry point to information about subcomponents of the UI (see 7.4 for details).

The GeneratesEvent Reference to the VendingBaseAuditEventType indicates that instances will generate Events of that EventType (see 7.26 for details).

The GeneratesEvent Reference to the ConfigurationChangedEventType indicates that an instance may generate Events of that EventType (see 7.29). Such an Event shall be generated when Objects gets added or removed from the Components Object, or when the values of Variables of the Configuration change. Multiple changes may be reported by a single Event.

7.24 PriceServiceType definition

7.24.1 Overview

The PriceServiceType provides the interface to access the price service. It is used by other components like the payment service. A more detailed overview is given in 6.2.5. It is formally defined in Table 83.

7.24.2 ObjectType definition

Table 83 - PriceServiceType definition
Attribute Value
BrowseNamePriceServiceType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject2:IdentificationIdentificationTypeM
0:HasComponentObjectConfigurationBaseConfigurationTypeM
0:HasComponentObjectPriceInformationPriceInformationTypeM
0:HasComponentObjectComponentsBaseComponentsTypeO
0:GeneratesEventObjectTypeConfigurationChangedEventType
Conformance Units
UnattendedRetail PriceService

The 2:Identification Object provides Properties describing the identification of the price service (see 7.2 for details).

The Configuration Object provides the configuration information of the price service (see 7.3 for details).

The PriceInformation Object provides the prices for the selections of the machine engines, managed by the payment service (see 7.11 for details).

The optional Components Object is the entry point to information about subcomponents of the machine engine (see 7.4 for details).

The GeneratesEvent Reference to the ConfigurationChangedEventType indicates that an instance may generate Events of that EventType (see 7.29). Such an Event shall be generated when Objects gets added or removed from the Components Object, or when the values of Variables of the Configuration change. Multiple changes may be reported by a single Event.

7.25 AuditCollectType definition

7.25.1 Overview

The AuditCollectType provides the interface to access the audit collect. It is not needed by other components of the Vending Machine but may be used by a configuration client (see 6.3.6). A more detailed overview is given in 6.2.6. It is formally defined in Table 84.

7.25.2 ObjectType definition

Table 84 - AuditCollectType definition
Attribute Value
BrowseNameAuditCollectType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseObjectType
0:HasComponentObject2:IdentificationIdentificationTypeM
0:HasComponentObjectConfigurationBaseConfigurationTypeM
0:HasComponentVariableIsCollectingAudit0:Boolean0:BaseDataVariableTypeM
0:HasComponentObjectComponentsBaseComponentsTypeO
0:GeneratesEventObjectTypeConfigurationChangedEventType
Conformance Units
UnattendedRetail AuditCollect

The 2:Identification Object provides Properties describing the identification of the audit collect (see 7.2 for details).

The Configuration Object provides the configuration information of the audit collect (see 7.3 for details).

The mandatory IsCollectingAudit Variable indicates if the audit collect is configured and running and connected to all relevant parts of the system to collect audit information. True indicates that all relevant audit information is collected, false indicated that not. The payment service may supervise this Variable and reject requests if audit is not running.

The optional Components Object is the entry point to information about subcomponents of the audit collect (see 7.4 for details).

The GeneratesEvent Reference to the ConfigurationChangedEventType indicates that an instance may generate Events of that EventType (see 7.29). Such an Event shall be generated when Objects gets added or removed from the Components Object, or when the values of Variables of the Configuration change. Multiple changes may be reported by a single Event.

7.26 VendingBaseAuditEventType definition

7.26.1 Overview

The VendingBaseAuditEventType provides base audit information to the audit collect. A more detailed overview is given in 6.3.4. It is formally defined in Table 86.

7.26.2 ObjectType definition

Table 85 - VendingBaseAuditEventType definition
Attribute Value
BrowseNameVendingBaseAuditEventType
IsAbstractTrue
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseEventType
0:HasPropertyVariableInMaintenanceMode0:Boolean0:PropertyTypeM
0:HasPropertyVariableCategory0:String0:PropertyTypeM
0:HasPropertyVariableEVADTSStatusCode0:String0:PropertyTypeO
0:HasPropertyVariableEVADTSStatusIsActive0:Boolean0:PropertyTypeO
Conformance Units
UnattendedRetail MachineEngine
UnattendedRetail PaymentService
UnattendedRetail UI
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill
UnattendedRetail PaymentDevice Cashless

The Properties defined in the BaseEventType shall be used in the following way:

EventId as defined in OPC 10000-5, uniquely identifying each Event.

EventType as defined in OPC 10000-5, identifying the type of Event.

SourceNode and SourceName as defined in OPC 10000-5, identifying the component of the Vending Machine generating the Event in the Server. This is helpful in environments where the OPC UA Server represents several components of a Vending Machine, e.g., payment service and machine engine. In addition, for Events specific to the payment device, the Object representing the payment device is used as SourceNode and SourceName in order to identify the payment device.

Time and ReceiveTime as defined in OPC 10000-5, indicating the time the Event occurred.

Message as defined in OPC 10000-5, containing a human-readable text of the Event.

Severity as defined in OPC 10000-5. For Events of VendingBaseAuditEventType the Severity shall be in the range of 201 to 400.

The optional Properties LocalTime, ConditionClassId, ConditionClassName, ConditionSubCassId and ConditionSubClassName should be omitted.

The mandatory InMaintenanceMode indicates whether the Event is generated while the component generating the Event is in maintenance mode. Set to true if in maintenance mode, false otherwise.

The mandatory Category defines the category of Event. Details of predefined categories are defined in 7.27.2, in Table 87.

The optional EVADTSStatusCode Variable contains a status code according to Annex C of EVA DTS. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional EVADTSStatusIsActive Variable shall only be provided in combination with EVADTSStatusCode and provides the information, if the status code has become active (True) or not (False).

7.27 VendingAuditEventType definition

7.27.1 Overview

The VendingAuditEventType provides audit information to the audit collect. A more detailed overview is given in 6.3.4. It is formally defined in Table 86.

7.27.2 ObjectType definition

Table 86 - VendingAuditEventType definition
Attribute Value
BrowseNameVendingAuditEventType
IsAbstractTrue
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the VendingBaseAuditEventType
0:HasPropertyVariableCounter0:UInt320:PropertyTypeO
0:HasPropertyVariableMonetaryValuePriceDataType0:PropertyTypeO
0:HasPropertyVariableSlotIndex0:Int320:PropertyTypeO
0:HasPropertyVariableNewSlotContent0:UInt320:PropertyTypeO
0:HasPropertyVariableSelectionSelectionDataType0:PropertyTypeO
0:HasPropertyVariableUserId0:String0:PropertyTypeO
0:HasPropertyVariablePaymentDetailsActualPaymentDataType[]0:PropertyTypeO
0:HasPropertyVariableMonetaryValueWithContextPriceAndContextDataType0:PropertyTypeO
0:HasPropertyVariablePaymentMode0:String0:PropertyTypeO
0:HasPropertyVariableFailStatusDeliveryAndPaymentStatusEnum0:PropertyTypeO
0:HasPropertyVariableNonRefundedValuePriceAndContextDataType0:PropertyTypeO
Conformance Units
UnattendedRetail PaymentService
UnattendedRetail PaymentDevice Coin
UnattendedRetail PaymentDevice Bill
UnattendedRetail PaymentDevice Cashless

The mandatory Category defines the category of Event. This specification defines a set of categories. Vendors may define additional categories according to their implementations. The categories are defined in Table 87. In addition to the category, it is defined what optional fields of the Event shall be provided.

Table 87 - Categories for Events of VendingAuditEventType
Category Mandatory Fields ObjectTypes of Objects generating the Event Description
CoinInCashbox

Counter

MonetaryValue

PaymentDeviceTypeGets generated when coins get inserted into cashbox. Fields contain information of new inserted coins. The counter is the number of coins, the MonetaryValue the value of one coin. This event only considers coins of the same value. If coins of different values get inserted, several events need to be generated.
CoinInTube

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when coins get inserted into tube. Fields contain information of new inserted coins. The counter is the number of coins, the MonetaryValue the value of one coin.

The SlotIndex indicates in which SlotIndex the coins get stored. This event only considers coins of the same value and the same SlotIndex. If coins of different value and / or SlotIndex get inserted, several events need to be generated. The NewSlotContent is the number of coins in the SlotIndex after the coins have been added.

CoinManualFillTube

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when coins get manually inserted into tube. Fields contain information of new inserted coins. The counter is the number of coins, the MonetaryValue the value of one coin.

The SlotIndex indicates in which SlotIndex the coins get stored. This event only considers coins of the same value and the same SlotIndex. If coins of different value and / or SlotIndex get inserted, several events need to be generated. The NewSlotContent is the number of coins in the SlotIndex after the coins have been added.

CoinOut

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when coins get dispensed by technician manually. Fields contain information of coins dispensed.

The counter is the number of coins, the MonetaryValue the value of one coin.

The SlotIndex indicates from which SlotIndex the coins get dispensed. This event only considers coins of the same value and the same SlotIndex. If coins of different value and / or SlotIndex get dispensed, several events need to be generated. The NewSlotContent is the number of coins in the SlotIndex after the coins have been dispensed.

CoinPayout

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when coins get dispensed as payout. Fields contain information of coins dispensed.

The counter is the number of coins, the MonetaryValue the value of one coin.

The SlotIndex indicates from which SlotIndex the coins get dispensed. This event only considers coins of the same value and the same SlotIndex. If coins of different value and / or SlotIndex get dispensed, several events need to be generated. The NewSlotContent is the number of coins in the SlotIndex after the coins have been dispensed.

CoinReject-PaymentDeviceTypeGets generated when coin was inserted into payment service and got rejected.
BillInStacker

Counter

MonetaryValue

PaymentDeviceTypeGets generated when bill was inserted into payment service and moved into stacker. The counter is the number of bills, the MonetaryValue the value of one bill.
BillInRecycle

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when bill was inserted into payment service and moved into recycler. The counter is the number of bills, the MonetaryValue the value of one bill.

The SlotIndex indicates from which SlotIndex the bills get inserted. This event only considers bills of the same value and the same SlotIndex. If bills of different value and / or SlotIndex get inserted, several events need to be generated. The NewSlotContent is the number of bills in the SlotIndex after the bills have been inserted.

BillOut

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when bills get manually removed from recycler. The counter is the number of bills, the MonetaryValue the value of one bill.

The SlotIndex indicates from which SlotIndex the bills get removed. This event only considers bills of the same value and the same SlotIndex. If bills of different value and / or SlotIndex get removed, several events need to be generated. The NewSlotContent is the number of bills in the SlotIndex after the bills have been removed.

BillPayout

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when bills get dispensed as payout from recycler. The counter is the number of bills, the MonetaryValue the value of one bill.

The SlotIndex indicates from which SlotIndex the bills get dispensed. This event only considers bills of the same value and the same SlotIndex. If bills of different value and / or SlotIndex get dispensed, several events need to be generated. The NewSlotContent is the number of bills in the SlotIndex after the bills have been dispensed.

BillManualFillRecycle

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when bills get manually inserted into recycler. Fields contain information about the manually inserted bills.

The counter is the number of bills, the MonetaryValue the value of one bill.

The SlotIndex indicates to which SlotIndex the bills get inserted. This event only considers bills of the same value and the same SlotIndex. If bills of different value and / or SlotIndex get inserted, several events need to be generated. The NewSlotContent is the number of bills in the SlotIndex after the bills have been inserted.

BillTransferRecycle

Counter

MonetaryValue

SlotIndex

NewSlotContent

PaymentDeviceType

Gets generated when bills get transferred from the recycler to the stacker. Fields contain information about the transferred bills.

The counter is the number of bills, the MonetaryValue the value of one bill.

The SlotIndex indicates from which SlotIndex the bills get transferred. This event only considers bills of the same value and the same SlotIndex. If bills of different value and / or SlotIndex get transferred, several events need to be generated. The NewSlotContent is the number of bills in the SlotIndex after the bills have been transferred.

BillReject-PaymentDeviceTypeGets generated when bill was inserted into payment service and got rejected.
CardIn

MonetaryValue

UserId

PaymentDeviceType

Gets generated when the cashless payment service is able to start the payment (e.g., when card gets inserted or card or app on a device is contactless read from payment device).

The MonetaryValue contains the monetary value, the Vending Machine may consume. Depending on the system, this may be handled differently, e.g., may be the amount on a pre-paid card or some general credit allowed for a credit card.

The UserId contains the identification of the user associated with the card.

CardRefund

MonetaryValue

UserId

PaymentDeviceType

Gets generated when a delivery gets cancelled and a monetary value gets refunded back to the card.

The MonetaryValue contains the monetary value refunded, the UserId contains the identification of the user associated with the card.

CardRevalue

MonetaryValue

UserId

PaymentDeviceTypeGets generated when a monetary value gets recharged to the card, for example from cash. The MonetaryValue contains the monetary value recharged to the card, the UserId contains the identification of the user associated with the card.
CardCharge

MonetaryValue

UserId

PaymentDeviceTypeGets generated when a monetary value gets charged from the card by requesting a delivery. The MonetaryValue contains the monetary value charged from the card, the UserId contains the identification of the user associated with the card.
CardOut

MonetaryValue

UserId

PaymentDeviceTypeGets generated when card was removed from payment service. The MonetaryValue is the MonetaryValue of CardIn minus and the amount of value taken from the card plus the value added to the card. The UserId contains the identification of the user associated with the card.
DeliverRequestDoneSelection, PaymentDetails, MonetaryValueWithContextPaymentServiceTypeGets generated when a deliver request was successfully executed. Fields contain information about the effective selection, the effective PaymentDetails (an array of a structure containing the effective PaymentMode, the effective payment device, the effective UserId and the price received in the combination) to support mixed payments, and the overall paid price in the MonetaryValueWithContext, contain additional information like tax.
DeliverRequestFailedSelection, PaymentMode, UserId, FailStatus, NonRefundedValuePaymentServiceTypeGenerated when a deliver request fails. The Fields contain information about the requested selection, the PaymentMode and UserId used in the DeliverRequest method, the reason for the failure, and the amount of money that could not be refunded to the customer.
DeliverBasketRequestDone

BasketContent, PaymentDetails,

MonetaryValuePerBasketContent

PaymentServiceTypeGenerated when a deliver request is successfully executed. The Fields contain information about the effective BasketContent, the effective PaymentDetails (an array of structures containing the effective PaymentMode, the effective payment device, the effective UserId, and the price received for each combination, to support mixed payments), and the paid price per basket content represented as a MonetaryValuePerBasketContent, which may include additional information such as tax.
DeliverBasketRequestFailed

BasketContent, PaymentMode, UserId, FailStatus,

NonRefundedValue

PaymentServiceTypeGenerated when a deliver request of a basket fails. The Fields contain information about the requested basket content, the PaymentMode and UserId used in the DeliverBasketRequest method, the reason for the failure, and the amount of money that could not be refunded to the customer.
DeliverBasketRequestPartiallyDone

BasketContent,

PaymentDetails,

MonetaryValuePerBasketContent, PartialSuccessful,

FailStatus,

NonRefundedValue

PaymentServiceTypeGenerated when a deliver request of a basket was partially done. The Fields contain information about the requested basket content, the effective PaymentDetails (an array of structures containing the effective PaymentMode, the effective payment device, the effective UserId, and the price received for each combination, to support mixed payments), and the paid price per basket content represented as a MonetaryValuePerBasketContent, which may include additional information such as tax. In addition, PartialSuccessful indicates what parts of the basket have been delivered, FailStatus the reason for the partial failure, and NonRefundedValue the amount of money that could not be refunded to the customer.
Restart-

PaymentDeviceType

PaymentServiceType

MachineEngineType

UIType

Gets generated when the device gets restarted. The event gets actually generated before the device gets restarted.
OverpayMonetaryValuePaymentServiceTypeGets generated when the payment service cannot payout all inserted monetary value. That may be because the payment service does not have the possibility to payout enough monetary value or the user has not interacted / left the vending machine.
EVADTSStatusCode

EVADTSStatusCode

EVADTSStatusIsActive

PaymentServiceType

PaymentDeviceType

MachineEngineType

Gets generated when a DTSStatus becomes active or inactive. The Fields indicate the status as well as it has become active or inactive.

Note: When customer cancels the coins, a Vending Machine may create a CoinOut or a CoinPayout Event.

Note: Card as in CardIn, CardCharge, CardOut, can reference to any cashless asset like a credit card, company card, payment apps, etc.

Note: Tokens are managed the same way as cash, but the Currency of the PriceDataType shall use 000 as NumericCode and 0 as Exponent.

The optional Counter indicates the number of assets of value (coins, bills, or tokens) that are affected by the Event. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional MonetaryValue indicates the monetary value of the asset of value (coins, bills, or tokens) affected by the Event. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional SlotIndex indicates the slot used for buffering assets of value (coins, bills, or tokens). For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional NewSlotContent indicates the number of assets of value (coins, bills, or tokens) in the SlotIndex after the operation triggering the Event has been done. This field shall only be provided, if the SlotIndex is also provided. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional Selection identifies the selection that has been delivered or should have been delivered. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional UserId identifies the user associated with any cashless asset inserted into a payment device, or the UserId of the deliver request. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional PaymentDetails contains details of the payment done for a specific delivery associated to the Event. It provides an array to be able to represent mixed payments. If no mixed payment is used, the array shall have one entry. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional MonetaryValueWithContext contains the absolute amount of monetary value paid for a specific delivery associated to the Event. It contains additional information like the tax rate used, the discount or surcharge and the used price list. The monetary value shall be the sum of the monetary value provided in the PaymentDetails, if provided. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional PaymentMode indicates the PaymentMode of the DeliverRequest method in case the deliver associated to the Event was not successful. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional FailStatus indicates the failure, when the deliver request associated with the Event was not successful. Only the following values of the DeliveryAndPaymentStatusEnum are allowed: PaymentFailed, PaymentCancelledByUser, PaymentFailedWrongPrice, DeliveryFailRefundSuccess, DeliveryAndRefundFailed, DeliveryMixResultRefundSuccess, DeliveryMixResultRefundFailed. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional NonRefundedValue indicates, how much money could not be refunded when a delivery (partially) fails and stays in the Vending Machine. It may provide additional information like tax if applicable. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

7.27.3 Examples of Events of VendingAuditEventType

In the following, Events of VendingAuditEventType are shown, that would occur on a Vending Machine, having as payment devices a coin device COIN1, a bill device BILL1 and a cashless device CARD1.

The user requests a delivery which costs 9 €, inserts a 1 € coin, a token worth 1 €, a 5 € bill, and then inserts a credit card to pay the remaining 2 €. Afterwards the delivery is executed.

Event for 1 € coin:

Event for 1 token:

Event for 5 € bill:

Event for presenting a credit card:

Event for successful delivery:

7.28 VendingBasketAuditEventType definition

7.28.1 Overview

The VendingBasketAuditEventType provides audit information to the audit collect when a basket is involved. A more detailed overview is given in 6.3.4. It is formally defined in Table 86.

7.28.2 ObjectType definition

Table 88 - VendingBasketAuditEventType definition
Attribute Value
BrowseNameVendingBasketAuditEventType
IsAbstractTrue
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the VendingAuditEventType
0:HasPropertyVariableBasketContentSelectionDataType[]0:PropertyTypeO
0:HasPropertyVariableMonetaryValuePerBasketContentPriceAndContextDataType[]0:PropertyTypeO
0:HasPropertyVariablePartialSuccessful0:Boolean[]0:PropertyTypeO
Conformance Units
UnattendedRetail PaymentService Basket

The optional BasketContent identifies the content of a basket that has been delivered or should have been delivered. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional MonetaryValuePerBasketContent contains the monetary amount paid for each basket entry of a specific basket delivery associated with the Event. It shall be provided only in combination with the BasketContent Field and shall have the same array length as BasketContent. Each entry may include additional information such as the applied tax rate, any discount or surcharge, and the price list used. If PaymentDetails is provided, the sum of all monetary values in MonetaryValuePerBasketContent shall equal the sum of the monetary values specified in PaymentDetails. In the case of a partial basket delivery, the value corresponding to each undelivered entry in BasketContent shall be 0. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

The optional PartialSuccessful Field is used in the case of a partial basket delivery to indicate which parts of the BasketContent were actually delivered. It shall be provided only in combination with the BasketContent field and shall have the same array length as BasketContent. A value of "True" indicates that the corresponding part of the basket was successfully delivered. For the standardized Categories (see Table 87) it is defined whether this optional Property shall be provided.

7.29 ConfigurationChangedEventType definition

7.29.1 Overview

The ConfigurationChangedEventType provides the information that the configuration of a component of a Vending Machine has changed. Such an Event gets generated when the configuration of a component has changed and indicates to Clients, that they may need to reread the current configuration of the component. It is formally defined in Table 89.

7.29.2 ObjectType definition

Table 89 - ConfigurationChangedEventType definition
Attribute Value
BrowseNameConfigurationChangedEventType
IsAbstractTrue
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the 0:BaseEventType
Conformance Units
UnattendedRetail ConfigurationChangedEvents

The Properties defined in the BaseEventType shall be used in the following way:

EventId as defined in OPC 10000-5, uniquely identifying each Event

EventType as defined in OPC 10000-5, identifying the type of Event

SourceNode and SourceName as defined in OPC 10000-5, identifying the component of the Vending Machine generating the Event in the Server. This is helpful in environments where the OPC UA Server represents several components of a Vending Machine, e.g., payment service and machine engine.

Time and ReceiveTime as defined in OPC 10000-5, indicating the time the Event occurred

Message as defined in OPC 10000-5, containing a human-readable text of the Event

Severity as defined in OPC 10000-5. For Events of ConfigurationChangedEventType the Severity shall be in the range of 401 to 600.

The optional Properties LocalTime, ConditionClassId, ConditionClassName, ConditionSubCassId and ConditionSubClassName should be omitted.