189 строки
8.3 KiB
JSON
189 строки
8.3 KiB
JSON
// The configuration file consists of two objects:
|
||
// 1) The 'Defaults' object, which defines default settings for the telemetry
|
||
// configuration as well as a few control settings.
|
||
// 2) An array 'EndpointSpecific' of endpoint specific configuration settings
|
||
// Both objects are optional and if they are not specified, then publisher uses
|
||
// its internal default configuration, which generates telemetry messages compatible
|
||
// with the Microsoft Connected factory Preconfigured Solution (https://github.com/Azure/azure-iot-connected-factory).
|
||
|
||
// A JSON telemetry message for Connected factory looks like:
|
||
// {
|
||
// "NodeId": "i=2058",
|
||
// "ApplicationUri": "urn:myopcserver",
|
||
// "DisplayName": "CurrentTime",
|
||
// "Value": {
|
||
// "Value": "10.11.2017 14:03:17",
|
||
// "SourceTimestamp": "2017-11-10T14:03:17Z"
|
||
// }
|
||
// }
|
||
|
||
// The settings of 'Defaults' in the sample below, are similar to what publisher is
|
||
// using as its internal default telemetry configuration.
|
||
{
|
||
"Defaults": {
|
||
// The first two properties ('EndpointUrl' and 'NodeId' are configuring data
|
||
// taken from the OpcPublisher node configuration.
|
||
"EndpointUrl": {
|
||
|
||
// The following three properties can be used to configure the 'EndpointUrl'
|
||
// property in the JSON message send by publisher to IoTHub.
|
||
|
||
// Publish controls if the property should be part of the JSON message at all.
|
||
"Publish": false,
|
||
|
||
// Pattern is a regular expression, which is applied to the actual value of the
|
||
// property (here 'EndpointUrl').
|
||
// If this key is ommited (which is the default), then no regex matching is done
|
||
// at all, which improves performance.
|
||
// If the key is used you need to define groups in the regular expression.
|
||
// Publisher applies the regular expression and then concatenates all groups
|
||
// found and use the resulting string as the value in the JSON message to
|
||
//sent to IoTHub.
|
||
// This example mimics the default behaviour and defines a group,
|
||
// which matches the conplete value:
|
||
"Pattern": "(.*)",
|
||
// Here some more exaples for 'Pattern' values and the generated result:
|
||
// "Pattern": "i=(.*)"
|
||
// defined for Defaults.NodeId.Pattern, will generate for the above sample
|
||
// a 'NodeId' value of '2058'to be sent by publisher
|
||
// "Pattern": "(i)=(.*)"
|
||
// defined for Defaults.NodeId.Pattern, will generate for the above sample
|
||
// a 'NodeId' value of 'i2058' to be sent by publisher
|
||
|
||
// Name allows you to use a shorter string as property name in the JSON message
|
||
// sent by publisher. By default the property name is unchanged and will be
|
||
// here 'EndpointUrl'.
|
||
// The 'Name' property can only be set in the 'Defaults' object to ensure
|
||
// all messages from publisher sent to IoTHub have a similar layout.
|
||
"Name": "EndpointUrl"
|
||
|
||
},
|
||
"NodeId": {
|
||
"Publish": true,
|
||
|
||
// If you set Defaults.NodeId.Name to "ni", then the "NodeId" key/value pair
|
||
// (from the above example) will change to:
|
||
// "ni": "i=2058",
|
||
"Name": "NodeId"
|
||
},
|
||
|
||
// The MonitoredItem object is configuring the data taken from the MonitoredItem
|
||
// OPC UA object for published nodes.
|
||
"MonitoredItem": {
|
||
|
||
// If you set the Defaults.MonitoredItem.Flat to 'false', then a
|
||
// 'MonitoredItem' object will appear, which contains 'ApplicationUri'
|
||
// and 'DisplayNode' proerties:
|
||
// "NodeId": "i=2058",
|
||
// "MonitoredItem": {
|
||
// "ApplicationUri": "urn:myopcserver",
|
||
// "DisplayName": "CurrentTime",
|
||
// }
|
||
// The 'Flat' property can only be used for the 'MonitoredItem' and
|
||
// 'Value' configurat<61>on settings of the 'Defaults' objet and will be used
|
||
// for all JSON messages sent by publisher.
|
||
"Flat": true,
|
||
|
||
"ApplicationUri": {
|
||
"Publish": true,
|
||
"Name": "ApplicationUri"
|
||
},
|
||
"DisplayName": {
|
||
"Publish": true,
|
||
"Name": "DisplayName"
|
||
}
|
||
},
|
||
// The Value object is configuring the properties taken from the event object
|
||
// the OPC UA stack provided in the value change notification event.
|
||
"Value": {
|
||
// If you set the Defaults.Value.Flat to 'true', then the 'Value'
|
||
// object will disappear completely and the 'Value' and 'SourceTimestamp'
|
||
// members won't be nested:
|
||
// "DisplayName": "CurrentTime",
|
||
// "Value": "10.11.2017 14:03:17",
|
||
// "SourceTimestamp": "2017-11-10T14:03:17Z"
|
||
// The 'Flat' property can only be used for the 'MonitoredItem' and 'Value'
|
||
// configurat<61>on settings of the 'Defaults' objet and will be used for all JSON
|
||
// messages sent by publisher.
|
||
"Flat": false,
|
||
|
||
"Value": {
|
||
"Publish": true,
|
||
"Name": "Value"
|
||
},
|
||
"SourceTimestamp": {
|
||
"Publish": true,
|
||
"Name": "SourceTimestamp"
|
||
},
|
||
// 'StatusCode' is the 32 bit OPC UA status code
|
||
"StatusCode": {
|
||
"Publish": false,
|
||
"Name": "StatusCode"
|
||
// 'Pattern' is ignored for the 'StatusCode' value
|
||
},
|
||
// 'Status' is the symbolic name of 'StatusCode'
|
||
"Status": {
|
||
"Publish": false,
|
||
"Name": "Status"
|
||
}
|
||
}
|
||
},
|
||
|
||
// The next object allows to configure 'Publish' and 'Pattern' settings for specific
|
||
// endpoint URLs. Those will overwrite the settings specified in the 'Defaults' object
|
||
// or the default settings used by publisher.
|
||
// It is not allowed to specify 'Name' and 'Flat' properties in this object.
|
||
"EndpointSpecific": [
|
||
// The following shows how a endpoint specific configuration can look like:
|
||
{
|
||
// 'ForEndpointUrl' allows to configure for which OPC UA server this
|
||
// object applies and is a required property for all objects in the
|
||
// 'EndpointSpecific' array.
|
||
// The value of 'ForEndpointUrl' must be an 'EndpointUrl' configured in
|
||
// the publishednodes.json confguration file.
|
||
"ForEndpointUrl": "opc.tcp://<your_opcua_server>:<your_opcua_server_port>/<your_opcua_server_path>",
|
||
"EndpointUrl": {
|
||
// We overwrite the default behaviour and publish the
|
||
// endpoint URL in this case.
|
||
"Publish": true,
|
||
// We are only interested in the URL part following the 'opc.tcp://' prefix
|
||
// and define a group matching this.
|
||
"Pattern": "opc.tcp://(.*)"
|
||
},
|
||
"NodeId": {
|
||
// We are not interested in the configured 'NodeId' value,
|
||
// so we do not publish it.
|
||
"Publish": false
|
||
// No 'Pattern' key is specified here, so the 'NodeId' value will be
|
||
// taken as specified in the publishednodes configuration file.
|
||
},
|
||
"MonitoredItem": {
|
||
"ApplicationUri": {
|
||
// We already publish the endpoint URL, so we do not want
|
||
// the ApplicationUri of the MonitoredItem to be published.
|
||
"Publish": false
|
||
},
|
||
"DisplayName": {
|
||
"Publish": true
|
||
}
|
||
},
|
||
"Value": {
|
||
"Value": {
|
||
// The value of the node is important for us, everything else we
|
||
// are not interested in to keep the data ingest as small as possible.
|
||
"Publish": true
|
||
},
|
||
"SourceTimestamp": {
|
||
"Publish": false
|
||
},
|
||
"StatusCode": {
|
||
"Publish": false
|
||
},
|
||
"Status": {
|
||
"Publish": false
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|