====== 3 IO-Link Ports ====== '''' is the **0-based** port index: ''0'' … ''3''. These endpoints control port mode and power, handle IODD files, and provide access to process data and device parameters. ===== Port Status and Control ===== ==== Status ==== ''GET //device/status'' Returns the current status of an IO-Link port. **Response** { "port_mode": 2, "port_mode_string": "sdci", "port_mode_string_loc": "...", "port_mode_string_loc_long": "...", "power": 1, "power_string": "on", "power_string_loc": "...", "power_string_loc_long": "...", "power_on_enable": true, "power_off_enable": false, "comm": 1, "comm_string": "active", "comm_string_loc": "...", "comm_string_loc_long": "...", "error": 0, "error_string": "no_error", "error_string_loc": "...", "error_string_loc_long": "...", "error_data": 0, "error_data_string": "...", "error_data_string_loc": "...", "error_data_string_loc_long": "...", "vendor_id": 1234, "device_id": 5678 } ^ Field ^ Type ^ Description ^ | ''port_mode'' | int | Active port mode (see mode table below) | | ''port_mode_string'' | string | Mode as string (e.g. ''sdci'', ''di'', ''do'', ''off'') | | ''power'' | int | ''1'' = power on, ''0'' = power off | | ''power_on_enable'' | bool | Whether power-on is currently allowed | | ''power_off_enable'' | bool | Whether power-off is currently allowed | | ''comm'' | int | ''1'' = communication active | | ''comm_string'' | string | Communication status string | | ''error'' / ''error_data'' | int | Error codes; ''0'' = no error | | ''vendor_id'' | int | Connected device vendor ID | | ''device_id'' | int | Connected device device ID | ==== Set Mode ==== ''GET //device/setmode/'' Sets the IO-Link port operating mode. **Response:** [[1_introduction#Common_Response_Fields|Error envelope]] ^ '''' ^ String ^ Description ^ | ''0'' | ''sdci'' | IO-Link (SDCI) communication — default | | ''1'' | ''di'' | Digital Input | | ''2'' | ''do'' | Digital Output | | ''3'' | ''off'' | Port disabled | ==== Power On ==== ''GET //device/poweron'' Enables 24 V supply power on the port. **Response:** [[1_introduction#Common_Response_Fields|Error envelope]] ==== Power Off ==== ''GET //device/poweroff'' Disables supply power on the port. **Response:** [[1_introduction#Common_Response_Fields|Error envelope]] ==== Set Power ==== ''GET //device/power/'' Convenience alternative to the dedicated ''poweron'' / ''poweroff'' endpoints. * '''' = ''1'': power on * '''' = ''0'': power off **Response:** [[1_introduction#Common_Response_Fields|Error envelope]] ===== IODD Handling ===== ==== IODD Info ==== ''GET //device/iodd'' Returns IODD file information for the device connected to the port. Only meaningful when the port is in IO-Link (''sdci'') mode; returns an error otherwise. **Response** { "error": 0, "iodd_name": "...", "iodd_language": "en", "vendor_id": 1234, "vendor_name": "Vendor Inc.", "device_id": 5678, "device_count": 2, "device_options": [ { "device_name": "Model-A", "device_symbol": "..." } ], "device_selected": 0 } ^ Field ^ Description ^ | ''iodd_name'' | Name of the active IODD file | | ''iodd_language'' | Language code of the IODD | | ''vendor_id'' / ''vendor_name'' | Device vendor information | | ''device_id'' | IO-Link device ID | | ''device_count'' | Number of device variants in the IODD | | ''device_options'' | Array of available device variants | | ''device_selected'' | Index of the currently active variant | ==== IODD Files ==== ''GET //device/iodd/files'' Returns a list of all IODD files uploaded for this port. Useful when an IODD ZIP contains multiple device definitions. **Response:** Array of IODD file descriptors (structure depends on stored files). ==== Selected IODD ==== ''GET //device/iodd/selected'' Returns the index of the currently active IODD variant. ==== Select IODD ==== ''GET //device/iodd/selected/set/'' Selects the active IODD variant by index. **Response:** [[1_introduction#Common_Response_Fields|Error envelope]] ==== Upload IODD ==== ''POST|PUT //upload/'' Uploads an IODD file (ZIP or plain XML) for the port. '''' is used as the stored filename on the device. Content-Type: ''application/octet-stream'' **Response:** [[1_introduction#Common_Response_Fields|Error envelope]] ===== Process Data ===== ==== PD Info ==== ''GET //pd-info'' Returns process-data variable descriptors derived from the loaded IODD. This is static metadata; it does not trigger IO-Link communication. **Response** { "error": { "error": 0, "..." }, "info": { "pd_in": [ { "name": "...", "datatype": "...", "..." } ], "pd_out": [ { "name": "...", "datatype": "...", "..." } ] } } Use the ''pd_in'' / ''pd_out'' descriptor arrays to understand the structure before reading or writing process data. ==== Write PD ==== ''POST|PUT //pd'' Writes PD-out values to the device and returns the current PD-in and PD-out values. **Request body** The ''value'' array must match the order and count of variables returned by ''pd-info'' for ''pd_out''. { "value": [ { "value": "1" }, { "value": "250" } ] } **Response** { "error": { "error": 0, "..." }, "value": { "pd_in": [ { "name": "...", "value": "...", "..." } ], "pd_out": [ { "name": "...", "value": "...", "..." } ] } } ===== Parameters ===== ==== Parameter Tree ==== ''GET //parameters'' Returns the full parameter tree from the IODD in a menu/sub-menu structure with variable descriptors. Useful for building a parameter browser UI. **Response** { "menu_count": 3, "menus": [ { "..." } ] } ==== Get Parameter ==== ''GET //parameter/get/'' ''GET //parameter/get//'' (for record parameters) Reads a single parameter by IODD index. **Response** { "error": { "error": 0, "..." }, "info": { "name": "Temperature", "index": 96, "subindex": 0, "datatype": "Float32", "access": "ro" }, "value": { "value": 23.4 } } ^ Field ^ Description ^ | ''info.name'' | Parameter name from IODD | | ''info.index'' | IODD parameter index | | ''info.subindex'' | Sub-index (0 for scalar parameters) | | ''info.datatype'' | Data type string (e.g. ''Float32'', ''UInt8'') | | ''info.access'' | Access level: ''ro'', ''rw'', or ''wo'' | | ''value.value'' | Current parameter value | ==== Set Parameter ==== ''POST|PUT //parameter/set/'' ''POST|PUT //parameter/set//'' (for record parameters) Writes a single parameter by IODD index. **Request body** { "value": "42" } **Response:** Same structure as ''Get Parameter'', reflecting the written-back value.