This guide will help you to get familiar with OPC-UA connector configuration for ThingsBoard IoT Gateway. Use general configuration to enable this extension. We will describe connector configuration file below.
{
  "server": {
    "name": "OPC-UA Default Server",
    "url": "localhost:4840/freeopcua/server/",
    "timeoutInMillis": 5000,
    "scanPeriodInMillis": 5000,
    "disableSubscriptions":false,
    "subCheckPeriodInMillis": 100,
    "showMap": false,
    "security": "Basic128Rsa15",
    "identity": {
      "type": "anonymous"
    },
    "mapping": [
      {
        "deviceNodePattern": "Root\\.Objects\\.Device1",
        "deviceNamePattern": "Device ${Root\\.Objects\\.Device1\\.serialNumber}",
        "attributes": [
          {
            "key": "temperature °C",
            "path": "${ns=2;i=5}"
          }
        ],
        "timeseries": [
          {
            "key": "humidity",
            "path": "${Root\\.Objects\\.Device1\\.TemperatureAndHumiditySensor\\.Humidity}"
          },
          {
            "key": "batteryLevel",
            "path": "${Battery\\.batteryLevel}"
          }
        ],
        "rpc_methods": [
          {
            "method": "multiply",
            "arguments": [2, 4]
          }
        ],
        "attributes_updates": [
          {
            "attributeOnThingsBoard": "deviceName",
            "attributeOnDevice": "Root\\.Objects\\.Device1\\.serialNumber"
          }
        ]
      }
    ]
  }
}Configuration in this section uses for connecting to OPC-UA server.
| Parameter | Default value | Description | 
|---|---|---|
| name | OPC-UA Default Server | Name of connector to server. | 
| host | localhost:4840/freeopcua/server/ | Hostname or ip address of OPC-UA server. | 
| timeoutInMillis | 5000 | Timeout in seconds for connecting to OPC-UA server. | 
| scanPeriodInMillis | 5000 | Period to rescan the server. | 
| disableSubscriptions | false | If true - the gateway will subscribe to interesting nodes and wait for data update and if false - the gateway will rescan OPC-UA server every scanPeriodInMillis | 
| subCheckPeriodInMillis | 100 | Period to check the subscriptions in the OPC-UA server. | 
| showMap | true | Show nodes on scanning true or false. | 
| security | Basic128Rsa15 | Security policy (Basic128Rsa15, Basic256, Basic256Sha256) | 
There are several types available for this subsection:
| This option of identity subsection is simplest. 
 This part of configuration will look like:  | 
| Using this option you can provide the username and password for connection to OPC-UA server. 
 This part of configuration will look like:  | 
| This option for identity is safest. 
 Optionally, you can provide the username/password pair. This part of configuration will look like:  | 
This configuration section contains array of nodes that the gateway will subscribe to after connecting to the OPC-UA server and settings about processing data from these nodes.
| Parameter | Default value | Description | 
|---|---|---|
| deviceNodePattern | Root\.Objects\.Device1 | Regular expression, uses for looking the node for a current device. | 
| deviceNamePattern | Device ${Root\.Objects\.Device1\.serialNumber} | Path to variable with device name, uses for looking the device name in some variable. | 
This part of configuration will look like:
        "deviceNodePattern": "Root\\.Objects\\.Device1",
        "deviceNamePattern": "Device ${Root\\.Objects\\.Device1\\.serialNumber}",
Optionally, you can add in this section parameter “converter” for using custom converter.
This subsection contains configurations for variables of the object, that will be interpreted as attributes for the device.
| Parameter | Default value | Description | 
|---|---|---|
| key | temperature °C | Tag, that will interpreted as attribute for ThingsBoard platform instance. | 
| path | ${ns=2;i=5} | Name of the variable in the OPC-UA object, uses for looking the value in some variable. ** * ** | 
** * ** You can put here some expression for search like:
This part of configuration will look like:
        "attributes": [
          {
            "key": "temperature °C",
            "path": "${ns=2;i=5}"
          }
        ],
This subsection contains configurations for variables of the object, that will be interpreted as telemetry for the device.
| Parameter | Default value | Description | 
|---|---|---|
| key | humidity | Tag, that will interpreted as telemetry for ThingsBoard platform instance. | 
| path | ${Root\.Objects\.Device1\.TemperatureAndHumiditySensor\.Humidity} | Name of the variable in the OPC-UA object, uses for looking the value in some variable. ** * ** | 
** * ** You can put here some expression for search like:
This part of configuration will look like:
        "timeseries": [
          {
            "key": "humidity",
            "path": "${Root\\.Objects\\.Device1\\.TemperatureAndHumiditySensor\\.Humidity}"
          }
        ],
This subsection contains configuration for RPC request from ThingsBoard platform instance.
| Parameter | Default value | Description | 
|---|---|---|
| method | multiply | Name of method on OPC-UA server. | 
| arguments | [2,4] | Arguments for the method (if this parameter doesn’t exist, arguments will take from rpc request). | 
This part of configuration will look like:
        "rpc_methods": [
          {
            "method": "multiply",
            "arguments": [2, 4]
          }
        ],
This subsection contains configuration for attribute updates request from ThingsBoard platform instance.
| Parameter | Default value | Description | 
|---|---|---|
| attributeOnThingsBoard | deviceName | Name of server side argument. | 
| attributeOnDevice | Root\.Objects\.Device1\.serialNumber | Name of variable that will change itself value with a value from attribute update request. | 
This part of configuration will look like:
        "attributes_updates": [
          {
            "attributeOnThingsBoard": "deviceName",
            "attributeOnDevice": "Root\\.Objects\\.Device1\\.serialNumber"
          }
        ]
Explore guides related to main ThingsBoard features: