Gateway Section

The first section of the sample_appsettings.json file defines the gateway object, the environment mode, the path to the password encryption file, and identifies the CygNet service endpoints and MQTT endpoint.

Note: Properties are listed in the order they appear in the sample_appsettings.json file. Search to find a particular property.

Property Description Required Property: Value Example

gateway

The top-level object containing all of the required properties to identify the data source (CygNet) and the data target (MQTT server).

yes

"gateway": {

environment

Specifies the environment in which Link is running: either SCADA mode when Link is running in a SCADA data center or EDGE mode when Link is running on a ForeSite Edge device.

This helps eliminate MQTT topic collisions for duplicated facility IDs, which are not always unique across CygNet services.

Possible values include:

  • Edge
  • SCADA

Edge is the default value. If the environment property is missing, the mode will be set to "Edge".

SCADA Mode Device Names

When in SCADA mode, in order to avoid device name collisions between facilities that share the same ID (but on a different site.service), Link will add the facility's site.service to the device ID. For example, the Sparkplug topic will be prefixed with "SITE.SERVICE::" (where "SITE" and "SERVICE" are the actual site and service of the facility, e.g. "MYSITE.UIS::").

For the DDS endpoint, the facility's CVS service will be added, rather than the DDS service.

Edge Mode Device Names

No site.service is appended to the facility ID.

Note: See strictPointValidation for more information about point validation in each mode.

yes

"environment": "Edge",

 

"environment": "SCADA",

passwordEncryptionKeyPath

The path to the file containing the key used to encrypt and decrypt passwords. See Link Security for more information.

no

"passwordEncryptionKeyPath": "C:\\ProgramData/Weatherford/Link/d2p55mdo.1nm",

node

Grouping for hardware information. Contains optional members: make and model.

yes

"node": {

"make": "Weatherford",

"model": "E1000"

},

make

The name of the hardware manufacturer.

no

See node above.

model

The model number of the hardware device.

no

See node above.

endpointConnections

Contains a list of endpoints or connections between the data source (CygNet) and the data target (MQTT server).

The members of the endpointConnections object are the names of the endpoints defined in each of the endpoints object, and the value of each is an array of names of other endpoints to which the endpoint is connected. In order for Link to run properly it is necessary to hook the CygNet endpoints up to the "MQTT" endpoint (which is called "MySparkPlug" in this example).

yes

"endpointConnections": {

"MyUIS": [ "MySparkPlug" ],

"MyVHS": [ "MyUIS", "MySparkPlug" ],

"MyDDS": [ "MyUIS", "MySparkPlug" ]

},

<MyUIS>

Specifies the name of the source CVS endpoint and the target MQTT endpoint. In this example, we use MyUIS but in your appsettings.json file this must match the name used for your CVS endpoint.

no

See endpointConnections.

<MyVHS>

Specifies the name of the source VHS and the target MQTT endpoint. In this example, we use MyVHS but in your appsettings.json file this must match the name used for your VHS endpoint.

Note: This endpoint can optionally connect to the CVS endpoint in order to auto-resolve the hostname and port or to synchronize the points configured in the CVS endpoint.

no

See endpointConnections.

<MyDDS>

Specifies the name of the source DDS and the target MQTT endpoint. In this example, we use MyDDS but in your appsettings.json file this must match the name used for your DDS endpoint.

Note: This endpoint can optionally connect to the CVS endpoint in order to auto-resolve the hostname and port or to synchronize the points configured in the CVS endpoint.

no

See endpointConnections.

endpoints

Contains the various endpoint connections required for the Link publisher.

In order for Link to publish CygNet data, at minimum a CVS endpoint and a target endpoint need to be configured. The other CygNet endpoints are optional.

yes

"endpoints": [

{

.

.

.

}