.. _custom_data_source: ===================== Exporting Device Data ===================== The main purpose with an OPC-UA server is to provide access to real world objects. External information is stored in the address space in the form of variable nodes. Variable nodes have value attributes. The following section shows how to connect attributes with real world objects. Value Callback -------------- The value callback is a function and is used for both reading and writing. .. function:: callback(nodeId[, value]) Writing Callback Parameters --------------------------- :nodeId: of type :ref:`node_id_type` The Node ID of the node to modify. :value: of type ::ref:`DataValue` For write The new variable value set by the client. :return: ignored Reading Callback Parameters --------------------------- :nodeId: of type :ref:`node_id_type` The Node ID of the node to read. :return: :ref:`DataValue` Data from device for read operation. Ignored for write operation. Error reporting --------------- To report an error, the callback should raise a LUA error with a suitable OPC-UA status code. Custom data source example -------------------------- .. literalinclude:: examples/server/server_value_callback.lua :language: lua :lines: 45-65 `Full source <_static/server/server_value_callback.lua>`__