Skip to content

Advanced Driver Settings (driverConfig) ​

Last updated

Every driver keeps its protocol settings in the device's driverConfig object. The common ones — ControlLogix slot, S7 rack and slot, FINS transport, node numbers and word order, MELSEC PLC, frame type and data code, Modbus unit ID, byte order, register map and serial settings, OPC-UA security, sign-in and subscriptions, MQTT topics and TLS, MTConnect catch-up, FOCAS macro variables and tool life groups, and the tag maps of EtherNet/IP (Generic), HTTP/REST, Custom JSON and Custom XML — have fields in the Add Device wizard and under Settings → Driver Settings. The rest (HTTP headers and POST body, fixed tag lists, OPC-UA namespace filter…) are set through the REST API. This page shows how, and lists every key each driver reads.

Endpoints ​

MethodPathPurpose
GET/api/devicesList devices, including each driverConfig (credentials masked)
GET/api/devices/:idOne device
POST/api/devicesCreate a device (admin, editor); accepts driverConfig
PUT/api/devices/:idUpdate fields, including driverConfig (admin, editor)
POST/api/devices/:id/connectConnect and subscribe (admin, editor)
POST/api/devices/:id/disconnectDisconnect and mark stopped (admin, editor)
GET/api/devices/:id/infoWhat the driver reports about the device (model, firmware, configured counts)
DELETE/api/devices/:idDelete (admin)
GET/api/tags/browse/:deviceIdBrowse result
GET/api/devices/status/allLive connection status of every device

Procedure ​

  1. Find the device ID in the address bar of its detail page, e.g. /devices/7.
  2. Sign in and keep the token, read the current config, write the new one, then restart the connection:
bash
APPLIANCE=http://192.168.1.20

# 1. Sign in (jq is optional: without it, copy data.tokens.token by hand)
TOKEN=$(curl -s -X POST "$APPLIANCE/api/auth/login" \
  -H 'Content-Type: application/json' \
  -d '{"email":"admin@scada.ink","password":"your-password"}' | jq -r .data.tokens.token)

# 2. Look at the current settings
curl -s "$APPLIANCE/api/devices/7" -H "Authorization: Bearer $TOKEN"

# 3. Replace driverConfig (the whole object is replaced, not merged)
curl -s -X PUT "$APPLIANCE/api/devices/7" \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"driverConfig":{"slot":2}}'

# 4. Restart the connection so the driver reads the new settings
curl -s -X POST "$APPLIANCE/api/devices/7/disconnect" -H "Authorization: Bearer $TOKEN"
curl -s -X POST "$APPLIANCE/api/devices/7/connect" -H "Authorization: Bearer $TOKEN"

If two-factor sign-in is on, the login returns a challenge instead; see REST API.

Warning: PUT replaces driverConfig entirely. Always send every key you want to keep. The UI's Save Changes is the exception: it rewrites only the keys it shows — the Driver Settings fields, GE SRTP (ranges), scanners and scales (transport, serial_port, baudrate) — and keeps everything else you set here. Clearing the SRTP range list still removes ranges, which is how you go back to the driver's defaults.

A credential-shaped key (password, token, apiKey, a private key such as tls_private_key, username/password pairs on a camera, a password embedded in a URL, …) is never returned — GET shows "password":"••••••••" instead, for every role, including viewers. Copy the value straight from GET into your PUT body and the stored credential is kept, because the placeholder means "unchanged"; type a real value instead and that becomes the new credential. Leaving the key out entirely still clears it, same as any other key, since the object is replaced rather than merged.

A credential can also be a reference to the Secrets store, written ${secret:NAME} — including inside a URL, as in rtsp://admin:${secret:CAM_PW}@camera/stream. A reference is a name rather than a credential, so GET returns it exactly as you typed it instead of masking it. The appliance looks the value up each time the device connects, so rotating the credential is one edit in Secrets and a reconnect here. A name that matches no secret fails the connection with Secret "NAME" is not in the Secrets store, and nothing is sent to the device.

The server doesn't validate driverConfig; an unknown key is ignored and a wrong type usually shows up as a connection or read error in the driver log.

Keys by driver ​

DriverKeys (default)
ControlLogix, CompactLogixslot (0)
SLC 500, MicroLogixslot (0); tags — list of address strings shown by Browse
Siemens S7rack (0), slot (1); tags — list of { "path", "name", "description" } shown by Browse. Symbols imported from TIA Portal are entries with "source": "tia", whose name is the symbol and path its address; Browse lists them by name, and a tag path can be the symbol
Siemens S7 (OPC UA)The OPC-UA keys, except that security defaults to "auto" (the strongest policy the CPU offers); plus browse_depth (8, 1–16)
Omron FINStransport ("tcp"; also "udp"), node (1), src_node (10), unit_address (0), word_order ("CDAB"; also "ABCD", "BADC", "DCBA"); tags — list of address strings
Mitsubishi MELSECplc_type ("iQ-R"; also "iQ-L", "Q", "L", "QnA", "FX"), frame_type ("3E"; also "4E", "1E"), data_code ("binary"; also "ascii"); tags — list of device strings
AutomationDirectunit_id (1), byte_order ("ABCD"), registers (a 10-entry DirectLogic preset) — same format as Modbus TCP
GE / Emerson SRTPtags — list such as ["%R1","%Q12"]; ranges — list of { "type", "start", "end" }
Modbus TCPunit_id (1, 0–255), byte_order ("ABCD"; also "CDAB", "BADC", "DCBA"); registers — list of { "name", "address", "type": "hr"/"ir"/"coil"/"di", "count", "data_type", "byte_order", "description" }
Modbus RTUserial_port ("/dev/ttyUSB0"), baudrate (9600), parity ("N"/"E"/"O"), stopbits (1), bytesize (8), slave_id (1), timeout (1.0 s), byte_order ("ABCD"), registers (as Modbus TCP, plus function_code)
OPC-UAsecurity ("None"; also "Basic256Sha256", "Aes128Sha256RsaOaep", "Aes256Sha256RsaPss", "Basic256", "Basic128Rsa15"), security_mode ("SignAndEncrypt"; also "Sign"), auth_mode ("anonymous", "username", "certificate"), username, password, user_certificate (PEM), user_private_key (PEM), user_key_password, use_subscriptions ("true"), publishing_interval_ms (1000), sampling_interval_ms (the publishing interval), namespace_filter (list of namespace indexes), browse_include_builtin (false)
MQTTtopics (["#"]), qos (0), client_id (scadaink- plus the device ID), username, password, tls ("false"), tls_verify ("true"), tls_ca_cert, tls_client_cert, tls_private_key (PEM text), tls_key_password
EtherNet/IP (Generic)tags — list of { "name", "assembly", "offset", "cip_type", "bit" } (assembly) or { "name", "class_code", "instance", "attribute", "cip_type", "data_type", "service", "write_service", "writeable", "description" } (attribute)
MTConnectdevice (empty), sample_catchup ("true"), sample_count (1000)
Fanuc FOCASmacro_variables (list of numbers or ranges), macro_write ("false"), tool_life_groups (list), status_style ("auto"; also "30i", "legacy")
SECS/GEMsession_id (1), mode ("active"/"passive"), svids, ceids, t3 (45), t5 (10), t6 (5), t7 (10)
HTTP / REST API, Custom JSONbase_url ("http://IP:port"), method ("GET"/"POST"), headers, body, tags — list of { "path", "name", "url", "endpoint", "json_path", "data_type" } (json_path: dot path or JSONPath)
Custom XMLbase_url, method, headers, tags — list of { "path", "url", "endpoint", "xml_path", "attr", "data_type" } (xml_path: dot path or XPath with predicates)
Raw TCPencoding ("ascii"/"hex"), delimiter ("\n"), connect_timeout (10), read_timeout (5), tags — list of { "path", "request", "response_offset", "response_length", "data_type", "byte_order", "write_request" }
Barcode / QR Scannertransport ("tcp"/"serial"), serial_port, baudrate, delimiter ("\n"), tx_delimiter ("\r\n"), encoding ("utf-8"), connect_timeout (10), read_timeout (1), strip_prefix, strip_suffix
Weigh Scaleas scanner, plus weight_regex, unit ("kg"), stable_token ("ST"), unstable_token ("US")
Universal Robotsread_timeout (5)
KUKA (KUKAVARPROXY)variables — list of { "path", "krl", "data_type", "writeable" }; read_timeout (5)
FANUC Robottags — list of { "name", "class_code", "instance", "attribute", "data_type", "service" }
Machine VisionManaged by the Vision page — see Vision.

The driver guides in this category show worked examples for each.

See also ​

Scada.Ink Help Center