OPC Publisher configuration via command line options and environment variables

Home

This documentation applies to version 2.9

The following OPC Publisher configuration can be applied by Command Line Interface (CLI) options or as environment variable settings. Any CamelCase options can also be provided using environment variables (without the preceding --). When both environment variable and CLI argument are provided, the command line option will override the environment variable.

IMPORTANT: The command line of OPC Publisher only understands below command line options. You cannot specify environment variables on the command line (e.g., like env1=value env2=value). All option names are case-sensitive!

Secrets such as EdgeHubConnectionString, other connection strings, or the ApiKey should never be provided on the command line or as environment variables. It should be avoided at all cost. A file using the .env format can be specified using the ADDITIONAL_CONFIGURATION environment variable. The contents will be loaded before the command line arguments are evaluated. If a file name is not provided via said environment variable, OPC Publisher tries to load the /run/secrets/.env file. This approach integrates well with docker secrets. An example of this can be found here.

Please note that rolling of secrets is not supported and that any errors loading secrets is silently discarded.

 ██████╗ ██████╗  ██████╗    ██████╗ ██╗   ██╗██████╗ ██╗     ██╗███████╗██╗  ██╗███████╗██████╗
██╔═══██╗██╔══██╗██╔════╝    ██╔══██╗██║   ██║██╔══██╗██║     ██║██╔════╝██║  ██║██╔════╝██╔══██╗
██║   ██║██████╔╝██║         ██████╔╝██║   ██║██████╔╝██║     ██║███████╗███████║█████╗  ██████╔╝
██║   ██║██╔═══╝ ██║         ██╔═══╝ ██║   ██║██╔══██╗██║     ██║╚════██║██╔══██║██╔══╝  ██╔══██╗
╚██████╔╝██║     ╚██████╗    ██║     ╚██████╔╝██████╔╝███████╗██║███████║██║  ██║███████╗██║  ██║
 ╚═════╝ ╚═╝      ╚═════╝    ╚═╝      ╚═════╝ ╚═════╝ ╚══════╝╚═╝╚══════╝╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝
                                                 2.9.12 (.NET 8.0.8/win-x64/OPC Stack 1.5.374.78)
General
-------

  -h, --help                 Show help and exit.
  -f, --pf, --publishfile, --PublishedNodesFile=VALUE
                             The name of the file containing the configuration
                               of the nodes to be published as well as the
                               information to connect to the OPC UA server
                               sources.
                               This file is also used to persist changes made
                               through the control plane, e.g., through IoT Hub
                               device method calls.
                               When no file is specified a default `
                               publishednodes.json` file is created in the
                               working directory.
                               Default: `publishednodes.json`
      --cf, --createifnotexist, --CreatePublishFileIfNotExistKey[=VALUE]
                             Permit publisher to create the the specified
                               publish file if it does not exist. The new file
                               will be created under the access rights of the
                               publisher module.
                               The default file 'publishednodes.json' is always
                               created when no file name was provided on the
                               command line and this option is ignored.
                               If a file was specified but does not exist and
                               should not be created the module exits.
                               Default: `false`
      --pol, --usepolling, --UseFileChangePolling[=VALUE]
                             Poll for file changes instead of using a file
                               system watcher.
                               Use this setting when the underlying file system
                               does not support file system notifications such
                               as in some docker container setups.
                               Default: `false`
      --fe, --forceencryptedcredentials, --ForceCredentialEncryption[=VALUE]
                             If set to true the publisher will never write
                               plain text credentials into the published nodes
                               configuration file.
                               If a credential cannot be written to the file
                               using the IoT Edge workload API crypto provider
                               the publisher will exit with an error.
                               Default: `false` (write secrets as plain text
                               into the configuration file which should be
                               properly ACL'ed)
      --id, --publisherid, --PublisherId=VALUE
                             Sets the publisher id of the publisher.
                               Default: `not set` which results in the IoT edge
                               identity being used
  -s, --site, --SiteId=VALUE Sets the site name of the publisher module.
                               Default: `not set`
      --pi, --initfile, --InitFilePath[=VALUE]
                             A file from which to read initialization
                               instructions.
                               Use this option to have OPC Publisher run a set
                               of method calls found in this file.
                               The file must be formatted using a subset of the
                               .http/.rest file format without support for
                               indentation, scripting or environment variables.
                               Default: `not set` (disabled). If only a file
                               name is specified, it is loaded from the path
                               specifed using `--pn`. If just the argument is
                               provided without a value the default is `
                               publishednodes.init`.
      --il, --initlog, --InitLogFile=VALUE
                             A file into which the results of the
                               initialization instructions are written.
                               Only valid if `--pi` option is specified.
                               Default: If a init file is set using `--pi`, it
                               is appended with the `.log` extension. If just a
                               file name is used, the file is created in the
                               same folder as the init file configured using
                               the `--pi` command line option.
      --rs, --runtimestatereporting, --RuntimeStateReporting[=VALUE]
                             Enable that when publisher starts or restarts it
                               reports its runtime state using a restart
                               message.
                               Default: `false` (disabled)
      --api-key, --ApiKey=VALUE
                             Sets the api key that must be used to authenticate
                               calls on the publisher REST endpoint.
                               Default: `not set` (Key will be generated if not
                               available)
      --doa, --disableopenapi, --DisableOpenApiEndpoint[=VALUE]
                             Disable the OPC Publisher Open API endpoint
                               exposed by the built-in HTTP server.
                               Default: `false` (enabled).

Messaging configuration
-----------------------

  -c, --strict, --UseStandardsCompliantEncoding[=VALUE]
                             Use strict OPC UA standard compliance. It is
                               recommended to run the publisher in compliant
                               mode for best interoperability.
                               Be aware that explicitly specifying other
                               command line options can result in non-
                               comnpliance despite this option being set.
                               Default: `false` for backwards compatibility (2.
                               5.x - 2.8.x)
      --nf, --namespaceformat, --DefaultNamespaceFormat=VALUE
                             The format to use when serializing node ids and
                               qualified names containing a namespace uri into
                               a string.
                               Allowed values:
                                   `Uri`
                                   `Index`
                                   `Expanded`
                               Default: `Expanded` if `-c` is specified,
                               otherwise `Uri` for backwards compatibility.
      --mm, --messagingmode, --MessagingMode=VALUE
                             The messaging mode for messages
                               Allowed values:
                                   `PubSub`
                                   `Samples`
                                   `FullNetworkMessages`
                                   `FullSamples`
                                   `DataSetMessages`
                                   `SingleDataSetMessage`
                                   `DataSets`
                                   `SingleDataSet`
                                   `RawDataSets`
                                   `SingleRawDataSet`
                               Default: `PubSub` if `-c` is specified,
                               otherwise `Samples` for backwards compatibility.
      --ode, --optimizeddatasetencoding, --WriteValueWhenDataSetHasSingleEntry[=VALUE]
                             When a data set has a single entry the encoder
                               will write only the value of a data set entry
                               and omit the key.
                               This is not compliant with OPC UA Part 14.
                               Default: `false`.
      --me, --messageencoding, --MessageEncoding=VALUE
                             The message encoding for messages
                               Allowed values:
                                   `Uadp`
                                   `Json`
                                   `Xml`
                                   `Avro`
                                   `IsReversible`
                                   `JsonReversible`
                                   `IsGzipCompressed`
                                   `JsonGzip`
                                   `AvroGzip`
                                   `JsonReversibleGzip`
                               Default: `Json`.
      --bi, --batchtriggerinterval, --BatchTriggerInterval=VALUE
                             The network message publishing interval in
                               milliseconds. Determines the publishing period
                               at which point messages are emitted.
                               When `--bs` is 1 and `--bi` is set to 0 batching
                               is disabled.
                               Default: `10000` (10 seconds).
                               Also can be set using `BatchTriggerInterval`
                               environment variable in the form of a duration
                               string in the form `[d.]hh:mm:ss[.fffffff]`.
      --bs, --batchsize, --BatchSize=VALUE
                             The number of incoming OPC UA subscription
                               notifications to collect until sending a network
                               messages. When `--bs` is set to 1 and `--bi` is
                               0 batching is disabled and messages are sent as
                               soon as notifications arrive.
                               Default: `50`.
      --rdb, --removedupsinbatch, --RemoveDuplicatesFromBatch[=VALUE]
                             Use this option to remove values with the same
                               node id from batch messages in legacy `Samples`
                               mode. Sends only the latest value as per the
                               value's source timestamp.
                               Only applies to `Samples` mode, otherwise this
                               setting is ignored.
                               Default: `false` (keep all duplicate values).
      --ms, --maxmessagesize, --iothubmessagesize, --IoTHubMaxMessageSize=VALUE
                             The maximum size of the messages to emit. In case
                               the encoder cannot encode a message because the
                               size would be exceeded, the message is dropped.
                               Otherwise the encoder will aim to chunk messages
                               if possible.
                               Default: `256k` in case of IoT Hub messages, `0`
                               otherwise.
      --qos, --DefaultQualityOfService=VALUE
                             The default quality of service to use for data set
                               messages.
                               This does not apply to metadata messages which
                               are always sent with `AtLeastOnce` semantics.
                               Allowed values:
                                   `AtMostOnce`
                                   `AtLeastOnce`
                                   `ExactlyOnce`
                               Default: `AtLeastOnce`.
      --ttl, --DefaultMessageTimeToLive=VALUE
                             The default time to live for all network message
                               published in milliseconds if the transport
                               supports it.
                               This does not apply to metadata messages which
                               are always sent with a ttl of the metadata
                               update interval or infinite ttl.
                               Default: `not set` (infinite).
      --retain, --DefaultMessageRetention[=VALUE]
                             Whether by default to send messages with retain
                               flag to a broker if the transport supports it.
                               This does not apply to metadata messages which
                               are always sent as retained messages.
                               Default: `false'.
      --mts, --messagetimestamp, --MessageTimestamp=VALUE
                             The value to set as as the timestamp property of
                               messages during encoding (if the encoding
                               supports writing message timestamps).
                               Allowed values:
                                   `CurrentTimeUtc`
                                   `PublishTime`
                                   `EncodingTimeUtc`
                               Default: `CurrentTimeUtc` to use the time when
                               the message was created in OPC Publisher.
      --npd, --maxnodesperdataset, --MaxNodesPerDataSet=VALUE
                             Maximum number of nodes within a Subscription.
                               When there are more nodes configured for a data
                               set writer, they will be added to new
                               subscriptions. This also affects metadata
                               message size.
                               Default: `1000`.
      --kfc, --keyframecount, --DefaultKeyFrameCount=VALUE
                             The default number of delta messages to send until
                               a key frame message is sent. If 0, no key frame
                               messages are sent, if 1, every message will be a
                               key frame.
                               Default: `0`.
      --ka, --sendkeepalives, --EnableDataSetKeepAlives[=VALUE]
                             Enables sending keep alive messages triggered by
                               writer subscription's keep alive notifications.
                               This setting can be used to enable the messaging
                               profile's support for keep alive messages.
                               If the chosen messaging profile does not support
                               keep alive messages this setting is ignored.
                               Default: `false` (to save bandwidth).
      --msi, --metadatasendinterval, --DefaultMetaDataUpdateTime=VALUE
                             Default value in milliseconds for the metadata
                               send interval which determines in which interval
                               metadata is sent.
                               Even when disabled, metadata is still sent when
                               the metadata version changes unless `--mm=*
                               Samples` is set in which case this setting is
                               ignored. Only valid for network message
                               encodings.
                               Default: `0` which means periodic sending of
                               metadata is disabled.
      --dm, --disablemetadata, --DisableDataSetMetaData[=VALUE]
                             Disables sending any metadata when metadata
                               version changes. This setting can be used to
                               also override the messaging profile's default
                               support for metadata sending.
                               It is recommended to disable sending metadata
                               when too many nodes are part of a data set as
                               this can slow down start up time.
                               Default: `false` if the messaging profile
                               selected supports sending metadata and `--strict`
                                is set but not '--dct', `True` otherwise.
      --amt, --asyncmetadataloadtimeout, --AsyncMetaDataLoadTimeout=VALUE
                             The default duration in seconds a publish request
                               should wait until the meta data is loaded.
                               Loaded metadata guarantees a metadata message is
                               sent before the first message is sent but
                               loading of metadata takes time during
                               subscription setup. Set to `0` to block until
                               metadata is loaded.
                               Only used if meta data is supported and enabled.
                               Default: `5000` milliseconds.
      --ps, --publishschemas, --PublishMessageSchema[=VALUE]
                             Publish the Avro or Json message schemas to schema
                               registry or subtopics.
                               Automatically enables complex type system and
                               metadata support.
                               Only has effect if the messaging profile
                               supports publishing schemas.
                               Default: `True` if the message encoding requires
                               schemas (for example Avro) otherwise `False`.
      --asj, --preferavro, --PreferAvroOverJsonSchema[=VALUE]
                             Publish Avro schema even for Json encoded messages.
                                Automatically enables publishing schemas as if `
                               --ps` was set.
                               Default: `false`.
      --daf, --disableavrofiles, --DisableAvroFileWriter[=VALUE]
                             Disable writing avro files and instead dump
                               messages and schema as zip files using the
                               filesystem transport.
                               Default: `false`.
      --om, --maxsendqueuesize, --MaxNetworkMessageSendQueueSize=VALUE
                             The maximum number of messages to buffer on the
                               send path before messages are dropped.
                               Default: `4096`
      --wgp, --writergrouppartitions, --DefaultWriterGroupPartitionCount=VALUE
                             The number of partitions to split the writer group
                               into. Each partition represents a data flow to
                               the transport sink. The partition is selected by
                               topic hash.
                               Default: `0` (partitioning is disabled)
  -t, --dmt, --defaultmessagetransport, --DefaultTransport=VALUE
                             The desired transport to use to publish network
                               messages with.
                               Requires the transport to be properly configured
                               (see transport settings).
                               Allowed values:
                                   `IoTHub`
                                   `Mqtt`
                                   `EventHub`
                                   `Dapr`
                                   `Http`
                                   `FileSystem`
                                   `Null`
                               Default: `IoTHub` or the first configured
                               transport of the allowed value list.

Transport settings
------------------

  -b, --mqc, --mqttclientconnectionstring, --MqttClientConnectionString=VALUE
                             An mqtt connection string to use. Use this option
                               to connect OPC Publisher to a MQTT Broker
                               endpoint.
                               To connect to an MQTT broker use the format '
                               HostName=<IPorDnsName>;Port=<Port>[;Username=<
                               Username>;Password=<Password>;Protocol=<'v5'|'
                               v311'>]'. To publish via MQTT by default specify
                               `-t=Mqtt`.
                               Default: `not set`.
  -e, --ec, --edgehubconnectionstring, --dc, --deviceconnectionstring, --EdgeHubConnectionString=VALUE
                             A edge hub or iot hub connection string to use if
                               you run OPC Publisher outside of IoT Edge. The
                               connection string can be obtained from the IoT
                               Hub portal. It is not required to use this
                               option if running inside IoT Edge. To publish
                               through IoT Edge by default specify `-t=IoTHub`.
                               Default: `not set`.
      --ht, --ih, --iothubprotocol, --Transport=VALUE
                             Protocol to use for communication with EdgeHub.
                               Allowed values:
                                   `None`
                                   `AmqpOverTcp`
                                   `AmqpOverWebsocket`
                                   `Amqp`
                                   `MqttOverTcp`
                                   `Tcp`
                                   `MqttOverWebsocket`
                                   `Websocket`
                                   `Mqtt`
                                   `Any`
                               Default: `Mqtt` if device or edge hub connection
                               string is provided, ignored otherwise.
      --eh, --eventhubnamespaceconnectionstring, --EventHubNamespaceConnectionString=VALUE
                             The connection string of an existing event hub
                               namespace to use for the Azure EventHub
                               transport.
                               Default: `not set`.
      --sg, --schemagroup, --SchemaGroupName=VALUE
                             The schema group in an event hub namespace to
                               publish message schemas to.
                               Default: `not set`.
  -d, --dcs, --daprconnectionstring, --DaprConnectionString=VALUE
                             Connect the OPC Publisher to a dapr pub sub
                               component using a connection string.
                               The connection string specifies the PubSub
                               component to use and allows you to configure the
                               side car connection if needed.
                               Use the format 'PubSubComponent=<PubSubComponent>
                               [;GrpcPort=<GrpcPort>;HttpPort=<HttpPort>[;
                               Scheme=<'https'|'http'>][;Host=<IPorDnsName>]][;
                               CheckSideCarHealth=<'true'|'false'>]'.
                               To publish through dapr by default specify `-t=
                               Dapr`.
                               Default: `not set`.
  -w, --hcs, --httpconnectionstring, --HttpConnectionString=VALUE
                             Allows OPC Publisher to publish multipart messages
                               to a topic path using the http protocol (web
                               hook). Specify the target host and configure the
                               optional connection settings using a connection
                               string of the format 'HostName=<IPorDnsName>[;
                               Port=<Port>][;Scheme=<'https'|'http'>][;Put=true]
                               [;ApiKey=<ApiKey>]'. To publish via HTTP by
                               default specify `-t=Http`.
                               Default: `not set`.
  -o, --outdir, --OutputRoot=VALUE
                             A folder to write messages into.
                               Use this option to have OPC Publisher write
                               messages to a folder structure under this folder.
                                The structure reflects the topic tree. To
                               publish into the file system folder by default
                               specify `-t=FileSystem`.
                               Default: `not set`.
  -p, --httpserverport, --HttpServerPort=VALUE
                             The port on which the http server of OPC Publisher
                               is listening.
                               Default: `9072` if no value is provided.
      --unsecurehttp, --UnsecureHttpServerPort[=VALUE]
                             Allow unsecure access to the REST api of OPC
                               Publisher. A port can be specified if the
                               default port 9071 is not desired.
                               Do not enable this in production as it exposes
                               the Api Key on the network.
                               Default: `disabled`, if specified without a port
                               `9071` port is used.
      --rtc, --renewtlscert, --RenewTlsCertificateOnStartup[=VALUE]
                             If set a new tls certificate is created during
                               startup updating any previously created ones.
                               Default: `false`.
      --useopenapiv3, --UseOpenApiV3[=VALUE]
                             If enabled exposes the open api schema of OPC
                               Publisher using v3 schema (yaml).
                               Only valid if Open API endpoint is not disabled.
                               Default: `v2` (json).

Routing configuration
---------------------

      --rtt, --roottopictemplate, --RootTopicTemplate[=VALUE]
                             The default root topic of OPC Publisher.
                               If not specified, the `{PublisherId}` template
                               is the root topic.
                               Currently only the template variables
                                   `{SiteId}` and
                                   `{PublisherId}`
                               can be used as dynamic substituations in the
                               template. If the template variable does not
                               exist it is replaced with the `$default` string.
                               Default: `{PublisherId}`.
      --mtt, --methodtopictemplate, --MethodTopicTemplate=VALUE
                             The topic at which OPC Publisher's method handler
                               is mounted.
                               If not specified, the `{RootTopic}/methods`
                               template will be used as root topic with the
                               method names as sub topic.
                               Only
                                   `{RootTopic}`
                                   `{SiteId}` and
                                   `{PublisherId}`
                               can currently be used as replacement variables
                               in the template.
                               Default: `{RootTopic}/methods`.
      --ttt, --telemetrytopictemplate, --TelemetryTopicTemplate[=VALUE]
                             The default topic that all messages are sent to.
                               If not specified, the `{RootTopic}/messages/{
                               WriterGroup}` template will be used as root
                               topic for all events sent by OPC Publisher.
                               The template variables
                                   `{RootTopic}`
                                   `{SiteId}`
                                   `{Encoding}`
                                   `{PublisherId}`
                                   `{DataSetClassId}`
                                   `{DataSetWriter}` and
                                   `{WriterGroup}`
                                can be used as dynamic parts in the template.
                               If a template variable does not exist the name
                               of the variable is emitted.
                               Default: `{RootTopic}/messages/{WriterGroup}`.
      --ett, --eventstopictemplate, --EventsTopicTemplate=VALUE
                             The topic into which OPC Publisher publishes any
                               events that are not telemetry messages such as
                               discovery or runtime events.
                               If not specified, the `{RootTopic}/events`
                               template will be used.
                               Only
                                   `{RootTopic}`
                                   `{SiteId}`
                                   `{Encoding}` and
                                   `{PublisherId}`
                               can currently be used as replacement variables
                               in the template.
                               Default: `{RootTopic}/events`.
      --dtt, --diagnosticstopictemplate, --DiagnosticsTopicTemplate=VALUE
                             The topic into which OPC Publisher publishes
                               writer group diagnostics events.
                               If not specified, the `{RootTopic}/diagnostics/{
                               WriterGroup}` template will be used.
                               Only
                                   `{RootTopic}`
                                   `{SiteId}`
                                   `{Encoding}`
                                   `{PublisherId}` and
                                   `{WriterGroup}`
                               can currently be used as replacement variables
                               in the template.
                               Default: `{RootTopic}/diagnostics/{WriterGroup}`
      --mdt, --metadatatopictemplate, --DataSetMetaDataTopicTemplate[=VALUE]
                             The topic that metadata should be sent to.
                               In case of MQTT the message will be sent as
                               RETAIN message with a TTL of either metadata
                               send interval or infinite if metadata send
                               interval is not configured.
                               Only valid if metadata is supported and/or
                               explicitely enabled.
                               The template variables
                                   `{RootTopic}`
                                   `{SiteId}`
                                   `{TelemetryTopic}`
                                   `{Encoding}`
                                   `{PublisherId}`
                                   `{DataSetClassId}`
                                   `{DataSetWriter}` and
                                   `{WriterGroup}`
                               can be used as dynamic parts in the template.
                               Default: `{TelemetryTopic}` which means metadata
                               is sent to the same output as regular messages.
                               If specified without value, the default output
                               is `{TelemetryTopic}/metadata`.
      --stt, --schematopictemplate, --SchemaTopicTemplate[=VALUE]
                             The topic that schemas should be sent to if schema
                               publishing is configured.
                               In case of MQTT schemas will not be sent with .
                               Only valid if schema publishing is enabled (`--
                               ps`).
                               The template variables
                                   `{RootTopic}`
                                   `{SiteId}`
                                   `{PublisherId}`
                                   `{TelemetryTopic}`
                               can be used as variables inside the template.
                               Default: `{TelemetryTopic}/schema` which means
                               the schema is sent to a sub topic where the
                               telemetry message is sent to.
      --uns, --datasetrouting, --DefaultDataSetRouting=VALUE
                             Configures whether messages should automatically
                               be routed using the browse path of the monitored
                               item inside the address space starting from the
                               RootFolder.
                               The browse path is appended as topic structure
                               to the telemetry topic root which can be
                               configured using `--ttt`. Reserved characters in
                               browse names are escaped with their hex ASCII
                               code.
                               Allowed values:
                                   `None`
                                   `UseBrowseNames`
                                   `UseBrowseNamesWithNamespaceIndex`
                               Default: `None` (Topics must be configured).
      --ri, --enableroutinginfo, --EnableRoutingInfo[=VALUE]
                             Add routing information to messages. The name of
                               the property is `$$RoutingInfo` and the value is
                               the `DataSetWriterGroup` from which the
                               particular message is emitted.
                               Default: `False`.

Subscription settings
---------------------

      --oi, --opcsamplinginterval, --DefaultSamplingInterval=VALUE
                             Default value in milliseconds to request the
                               servers to sample values. This value is used if
                               an explicit sampling interval for a node was not
                               configured.
                               Default: `1000`.
                               Also can be set using `DefaultSamplingInterval`
                               environment variable in the form of a duration
                               string in the form `[d.]hh:mm:ss[.fffffff]`.
      --op, --opcpublishinginterval, --DefaultPublishingInterval=VALUE
                             Default value in milliseconds for the publishing
                               interval setting of a subscription created with
                               an OPC UA server. This value is used if an
                               explicit publishing interval was not configured.
                               When setting `--op=0` the server decides the
                               lowest publishing interval it can support.
                               Default: `1000`.
                               Also can be set using `DefaultPublishingInterval`
                                environment variable in the form of a duration
                               string in the form `[d.]hh:mm:ss[.fffffff]`.
      --eip, --immediatepublishing, --EnableImmediatePublishing[=VALUE]
                             By default OPC Publisher will create a
                               subscription with publishing disabled and only
                               enable it after it has filled it with all
                               configured monitored items. Use this setting to
                               create the subscription with publishing already
                               enabled.
                               Default: `false`.
      --ska, --keepalivecount, --DefaultKeepAliveCount=VALUE
                             Specifies the default number of publishing
                               intervals before a keep alive is returned with
                               the next queued publishing response.
                               Default: `0`.
      --slt, --lifetimecount, --DefaultLifetimeCount=VALUE
                             Default subscription lifetime count which is a
                               multiple of the keep alive counter and when
                               reached instructs the server to declare the
                               subscription invalid.
                               Default: `0`.
      --fd, --fetchdisplayname, --FetchOpcNodeDisplayName[=VALUE]
                             Fetches the displayname for the monitored items
                               subscribed if a display name was not specified
                               in the configuration.
                               Note: This has high impact on OPC Publisher
                               startup performance.
                               Default: `false` (disabled).
      --fp, --fetchpathfromroot, --FetchOpcBrowsePathFromRoot[=VALUE]
                             (Experimental) Explicitly disable or enable
                               retrieving relative paths from root for
                               monitored items.
                               Default: `false` (disabled).
      --qs, --queuesize, --DefaultQueueSize=VALUE
                             Default queue size for all monitored items if
                               queue size was not specified in the
                               configuration.
                               Default: `1` (for backwards compatibility).
      --aq, --autosetqueuesize, --AutoSetQueueSizes[=VALUE]
                             (Experimental) Automatically calculate queue sizes
                               for monitored items using the subscription
                               publishing interval and the item's sampling rate
                               as max(configured queue size, roundup(
                               publishinginterval / samplinginterval)).
                               Note that the server might revise the queue size
                               down if it cannot handle the calculated size.
                               Default: `false` (disabled).
      --ndo, --nodiscardold, --DiscardNew[=VALUE]
                             The publisher is using this as default value for
                               the discard old setting of monitored item queue
                               configuration. Setting to true will ensure that
                               new values are dropped before older ones are
                               drained.
                               Default: `false` (which is the OPC UA default).
      --mc, --monitoreditemdatachangetrigger, --DefaulDataChangeTrigger=VALUE
                             Default data change trigger for all monitored
                               items configured in the published nodes
                               configuration unless explicitly overridden.
                               Allowed values:
                                   `Status`
                                   `StatusValue`
                                   `StatusValueTimestamp`
                               Default: `StatusValue` (which is the OPC UA
                               default).
      --mwt, --monitoreditemwatchdog, --DefaultMonitoredItemWatchdogSeconds=VALUE
                             The subscription and monitored item watchdog
                               timeout in seconds the subscription uses to
                               check on late reporting monitored items unless
                               overridden in the published nodes configuration
                               explicitly.
                               Default: `not set` (watchdog disabled).
      --mwc, --monitoreditemwatchdogcondition, --DefaultMonitoredItemWatchdogCondition=VALUE
                             The default condition when to run the action
                               configured as the watchdog behavior. The
                               condition can be overridden in the published
                               nodes configuration.
                               Allowed values:
                                   `WhenAllAreLate`
                                   `WhenAnyIsLate`
                               Default: `WhenAllAreLate` (if enabled).
      --dwb, --watchdogbehavior, --DefaultWatchdogBehavior=VALUE
                             Default behavior of the subscription and monitored
                               item watchdog mechanism unless overridden in the
                               published nodes configuration explicitly.
                               Allowed values:
                                   `Diagnostic`
                                   `Reset`
                                   `FailFast`
                                   `ExitProcess`
                               Default: `Diagnostic` (if enabled).
      --sf, --skipfirst, --DefaultSkipFirst[=VALUE]
                             The publisher is using this as default value for
                               the skip first setting of nodes configured
                               without a skip first setting. A value of True
                               will skip sending the first notification
                               received when the monitored item is added to the
                               subscription.
                               Default: `False` (disabled).
      --rat, --republishaftertransfer, --RepublishAfterTransfer[=VALUE]
                             Configure whether publisher republishes missed
                               subscription notifications still in the server
                               queue after transferring a subscription during
                               reconnect handling.
                               This can result in out of order notifications
                               after a reconnect but minimizes data loss.
                               Default: `False` (disabled).
      --hbb, --heartbeatbehavior, --DefaultHeartbeatBehavior=VALUE
                             Default behavior of the heartbeat mechanism unless
                               overridden in the published nodes configuration
                               explicitly.
                               Allowed values:
                                   `WatchdogLKV`
                                   `WatchdogLKG`
                                   `PeriodicLKV`
                                   `PeriodicLKG`
                                   `WatchdogLKVWithUpdatedTimestamps`
                                   `WatchdogLKVDiagnosticsOnly`
                                   `PeriodicLKVDropValue`
                                   `PeriodicLKGDropValue`
                               Default: `WatchdogLKV` (Sending LKV in a
                               watchdog fashion).
      --hb, --heartbeatinterval, --DefaultHeartbeatInterval=VALUE
                             The publisher is using this as default value in
                               seconds for the heartbeat interval setting of
                               nodes that were configured without a heartbeat
                               interval setting. A heartbeat is sent at this
                               interval if no value has been received.
                               Default: `0` (disabled)
                               Also can be set using `DefaultHeartbeatInterval`
                               environment variable in the form of a duration
                               string in the form `[d.]hh:mm:ss[.fffffff]`.
      --ucr, --usecyclicreads, --DefaultSamplingUsingCyclicRead[=VALUE]
                             All nodes should be sampled using periodical
                               client reads instead of subscriptions services,
                               unless otherwise configured.
                               Default: `false`.
      --xmi, --maxmonitoreditems, --MaxMonitoredItemPerSubscription=VALUE
                             Max monitored items per subscription until the
                               subscription is split.
                               This is used if the server does not provide
                               limits in its server capabilities.
                               Default: `not set`.
      --da, --deferredacks, --UseDeferredAcknoledgements[=VALUE]
                             (Experimental) Acknoledge subscription
                               notifications only when the data has been
                               successfully published.
                               Default: `false`.
      --rbp, --rebrowseperiod, --DefaultRebrowsePeriod=VALUE
                             (Experimental) The default time to wait until the
                               address space model is browsed again when
                               generating model change notifications.
                               Default: `12:00:00`.
      --sqp, --sequentialpublishing, --EnableSequentialPublishing[=VALUE]
                             Set to false to disable sequential publishing in
                               the protocol stack.
                               Default: `True` (enabled).
      --smi, --subscriptionmanagementinterval, --SubscriptionManagementIntervalSeconds=VALUE
                             The interval in seconds after which the publisher
                               re-applies the desired state of the subscription
                               to a session.
                               Default: `0` (only on configuration change).
      --bnr, --badnoderetrydelay, --BadMonitoredItemRetryDelaySeconds=VALUE
                             The delay in seconds after which nodes that were
                               rejected by the server while added or updating a
                               subscription or while publishing, are re-applied
                               to a subscription.
                               Set to 0 to disable retrying.
                               Default: `1800` seconds.
      --inr, --invalidnoderetrydelay, --InvalidMonitoredItemRetryDelaySeconds=VALUE
                             The delay in seconds after which the publisher
                               attempts to re-apply nodes that were incorrectly
                               configured to a subscription.
                               Set to 0 to disable retrying.
                               Default: `300` seconds.
      --ser, --subscriptionerrorretrydelay, --SubscriptionErrorRetryDelaySeconds=VALUE
                             The delay in seconds between attempts to create a
                               subscription in a session.
                               Set to 0 to disable retrying.
                               Default: `2` seconds.
      --urc, --usereverseconnect, --DefaultUseReverseConnect[=VALUE]
                             (Experimental) Use reverse connect for all
                               endpoints in the published nodes configuration
                               unless otherwise configured.
                               Default: `false`.
      --dtr, --disabletransferonreconnect, --DisableSubscriptionTransfer[=VALUE]
                             Do not attempt to transfer subscriptions when
                               reconnecting but re-establish the subscription.
                               Default: `false`.
      --dct, --disablecomplextypesystem, --DisableComplexTypeSystem[=VALUE]
                             Never load the complex type system for any
                               connections that are required for subscriptions.
                               This setting not just disables meta data
                               messages but also prevents transcoding of
                               unknown complex types in outgoing messages.
                               Default: `false`.
      --dsg, --disablesessionpergroup, --DisableSessionPerWriterGroup[=VALUE]
                             Disable creating a separate session per writer
                               group. Instead sessions are re-used across
                               writer groups.
                               Default: `False`.
      --ipi, --ignorepublishingintervals, --IgnoreConfiguredPublishingIntervals[=VALUE]
                             Always use the publishing interval provided via
                               command line argument `--op` and ignore all
                               publishing interval settings in the
                               configuration.
                               Combine with `--op=0` to let the server use the
                               lowest publishing interval it can support.
                               Default: `False` (disabled).

OPC UA Client configuration
---------------------------

      --aa, --acceptuntrusted, --AutoAcceptUntrustedCertificates[=VALUE]
                             The publisher accepts untrusted certificates
                               presented by a server it connects to.
                               This does not include servers presenting bad
                               certificates or certificates that fail chain
                               validation. These errors cannot be suppressed
                               and connection will always be rejected.
                               WARNING: This setting should never be used in
                               production environments!
      --rur, --rejectunknownrevocationstatus, --RejectUnknownRevocationStatus[=VALUE]
                             Set this to `False` to accept certificates
                               presented by a server that have an unknown
                               revocation status.
                               WARNING: This setting should never be used in
                               production environments!
                               Default: `True`.
      --ct, --createsessiontimeout, --CreateSessionTimeout=VALUE
                             Amount of time in seconds to wait until a session
                               is connected.
                               Default: `5` seconds.
      --mr, --reconnectperiod, --MinReconnectDelay=VALUE
                             The minimum amount of time in milliseconds to wait
                               reconnection of session is attempted again.
                               Default: `1000` milliseconds.
      --xr, --maxreconnectperiod, --MaxReconnectDelay=VALUE
                             The maximum amount of time in millseconds to wait
                               between reconnection attempts of the session.
                               Default: `60000` milliseconds.
      --sto, --sessiontimeout, --DefaultSessionTimeout=VALUE
                             Maximum amount of time in seconds that a session
                               should remain open by the OPC server without any
                               activity (session timeout). Requested from the
                               OPC server at session creation.
                               Default: `60` seconds.
      --ki, --keepaliveinterval, --KeepAliveInterval=VALUE
                             The interval in seconds the publisher is sending
                               keep alive messages to the OPC servers on the
                               endpoints it is connected to.
                               Default: `10` seconds.
      --sct, --servicecalltimeout, --DefaultServiceCallTimeout=VALUE
                             Maximum amount of time in seconds that a service
                               call should take before it is being cancelled.
                               This value can be overridden in the request
                               header.
                               Default: `180` seconds.
      --cto, --connecttimeout, --DefaultConnectTimeout=VALUE
                             Maximum amount of time in seconds that a service
                               call should wait for a connected session to be
                               used.
                               This value can be overridden in the request
                               header.
                               Default: `not set` (in this case the default
                               service call timeout value is used).
      --ot, --operationtimeout, --OperationTimeout=VALUE
                             The operation service call timeout of individual
                               service requests to the server in milliseconds.
                               As opposed to the `--sco` timeout, this is the
                               timeout hint provided to the server in every
                               request.
                               This value can be overridden in the request
                               header.
                               Default: `120000` milliseconds.
      --cl, --clientlinger, --LingerTimeoutSeconds=VALUE
                             Amount of time in seconds to delay closing a
                               client and underlying session after the a last
                               service call.
                               Use this setting to speed up multiple subsequent
                               calls.
                               Default: `0` sec (no linger).
      --rcp, --reverseconnectport, --ReverseConnectPort=VALUE
                             The port to use when accepting inbound reverse
                               connect requests from servers.
                               Default: `4840`.
      --mnr, --maxnodesperread, --MaxNodesPerReadOverride=VALUE
                             Limit max number of nodes to read in a single read
                               request when batching reads or the server limit
                               if less.
                               Default: `0` (using server limit).
      --mnb, --maxnodesperbrowse, --MaxNodesPerBrowseOverride=VALUE
                             Limit max number of nodes per browse request when
                               batching browse operations or the server limit
                               if less.
                               Default: `0` (using server limit).
      --mpr, --minpublishrequests, --MinPublishRequests=VALUE
                             Minimum number of publish requests to queue once
                               subscriptions are created in the session.
                               Default: `2`.
      --ppr, --percentpublishrequests, --PublishRequestsPerSubscriptionPercent=VALUE
                             Percentage ratio of publish requests per
                               subscriptions in the session in percent up to
                               the number configured using `--xpr`.
                               Default: `100`% (1 request per subscription).
      --xpr, --maxpublishrequests, --MaxPublishRequests=VALUE
                             Maximum number of publish requests to every queue
                               once subscriptions are created in the session.
                               Default: `10`.
      --dcp, --disablecomplextypepreloading, --DisableComplexTypePreloading[=VALUE]
                             Complex types (structures, enumerations) a server
                               exposes are preloaded from the server after the
                               session is connected. In some cases this can
                               cause problems either on the client or server
                               itself. Use this setting to disable pre-loading
                               support.
                               Note that since the complex type system is used
                               for meta data messages it will still be loaded
                               at the time the subscription is created,
                               therefore also disable meta data support if you
                               want to ensure the complex types are never
                               loaded for an endpoint.
                               Default: `false`.
      --otl, --opctokenlifetime, --SecurityTokenLifetime=VALUE
                             OPC UA Stack Transport Secure Channel - Security
                               token lifetime in milliseconds.
                               Default: `3600000` (1h).
      --ocl, --opcchannellifetime, --ChannelLifetime=VALUE
                             OPC UA Stack Transport Secure Channel - Channel
                               lifetime in milliseconds.
                               Default: `300000` (5 min).
      --omb, --opcmaxbufferlen, --MaxBufferSize=VALUE
                             OPC UA Stack Transport Secure Channel - Max buffer
                               size.
                               Default: `65535` (64KB -1).
      --oml, --opcmaxmessagelen, --MaxMessageSize=VALUE
                             OPC UA Stack Transport Secure Channel - Max
                               message size.
                               Default: `4194304` (4 MB).
      --oal, --opcmaxarraylen, --MaxArrayLength=VALUE
                             OPC UA Stack Transport Secure Channel - Max array
                               length.
                               Default: `65535` (64KB - 1).
      --ol, --opcmaxstringlen, --MaxStringLength=VALUE
                             The max length of a string opc can transmit/
                               receive over the OPC UA secure channel.
                               Default: `130816` (128KB - 256).
      --obl, --opcmaxbytestringlen, --MaxByteStringLength=VALUE
                             OPC UA Stack Transport Secure Channel - Max byte
                               string length.
                               Default: `1048576` (1MB).
      --au, --appuri, --ApplicationUri=VALUE
                             Application URI as per OPC UA definition inside
                               the OPC UA client application configuration
                               presented to the server.
                               Default: `not set`.
      --pu, --producturi, --ProductUri=VALUE
                             The Product URI as per OPC UA definition insde the
                               OPC UA client application configuration
                               presented to the server.
                               Default: `not set`.
      --rejectsha1, --RejectSha1SignedCertificates=VALUE
                             If set to `False` OPC Publisher will accept SHA1
                               certificates which have been officially
                               deprecated and are unsafe to use.
                               Note: Set this to `False` to support older
                               equipment that uses Sha1 signed certificates
                               rather than using no security.
                               Default: `True`.
      --mks, --minkeysize, --MinimumCertificateKeySize=VALUE
                             Minimum accepted certificate size.
                               Note: It is recommended to this value to the
                               highest certificate key size possible based on
                               the connected OPC UA servers.
                               Default: 1024.
      --tm, --trustmyself, --AddAppCertToTrustedStore=VALUE
                             Set to `False` to disable adding the publisher's
                               own certificate to the trusted store
                               automatically.
                               Default: `True`.
      --sn, --appcertsubjectname, --ApplicationCertificateSubjectName=VALUE
                             The subject name for the app cert.
                               Default: `CN=<the value of --an|--appname>, C=DE,
                                S=Bav, O=Microsoft, DC=localhost`.
      --an, --appname, --ApplicationName=VALUE
                             The name for the app (used during OPC UA
                               authentication).
                               Default: `Microsoft.Azure.IIoT`
      --pki, --pkirootpath, --PkiRootPath=VALUE
                             PKI certificate store root path.
                               Default: `pki`.
      --ap, --appcertstorepath, --ApplicationCertificateStorePath=VALUE
                             The path where the own application cert should be
                               stored.
                               Default: $"{PkiRootPath}/own".
      --apt, --at, --appcertstoretype, --ApplicationCertificateStoreType=VALUE
                             The own application cert store type.
                               Allowed values:
                                   `Directory`
                                   `X509Store`
                               Default: `Directory`.
      --cfa, --configurefromappcert, --TryConfigureFromExistingAppCert[=VALUE]
                             Automatically set the application subject name,
                               host name and application uri from the first
                               valid application certificate found in the
                               application certificate store path.
                               If the chosen certificate is valid, it will be
                               used, otherwise a new, self-signed certificate
                               with the information will be created.
                               Default: `false`.
      --apw, --appcertstorepwd, --ApplicationCertificatePassword=VALUE
                             Password to use when storing the application
                               certificate in the store folder if the store is
                               of type `Directory`.
                               Default: empty, which means application
                               certificate is not protected by default.
      --tp, --trustedcertstorepath, --TrustedPeerCertificatesPath=VALUE
                             The path of the trusted cert store.
                               Default: $"{PkiRootPath}/trusted".
      --tpt, --TrustedPeerCertificatesType=VALUE
                             Trusted peer certificate store type.
                               Allowed values:
                                   `Directory`
                                   `X509Store`
                               Default: `Directory`.
      --rp, --rejectedcertstorepath, --RejectedCertificateStorePath=VALUE
                             The path of the rejected cert store.
                               Default: $"{PkiRootPath}/rejected".
      --rpt, --RejectedCertificateStoreType=VALUE
                             Rejected certificate store type.
                               Allowed values:
                                   `Directory`
                                   `X509Store`
                               Default: `Directory`.
      --ip, --issuercertstorepath, --TrustedIssuerCertificatesPath=VALUE
                             The path of the trusted issuer cert store.
                               Default: $"{PkiRootPath}/issuer".
      --ipt, --TrustedIssuerCertificatesType=VALUE
                             Trusted issuer certificate store type.
                               Allowed values:
                                   `Directory`
                                   `X509Store`
                               Default: `Directory`.
      --up, --usercertstorepath, --TrustedUserCertificatesPath=VALUE
                             The path of the certificate store for user
                               certificates.
                               Default: $"{PkiRootPath}/users".
      --upt, --TrustedUserCertificatesType=VALUE
                             Type of certificate store for all User
                               certificates.
                               Allowed values:
                                   `Directory`
                                   `X509Store`
                               Default: `Directory`.
      --uip, --userissuercertstorepath, --UserIssuerCertificatesPath=VALUE
                             The path of the user issuer cert store.
                               Default: $"{PkiRootPath}/users/issuer".
      --uit, --UserIssuerCertificatesType=VALUE
                             Type of the issuer certificate store for User
                               certificates.
                               Allowed values:
                                   `Directory`
                                   `X509Store`
                               Default: `Directory`.

Diagnostic options
------------------

      --ll, --loglevel, --LogLevel=VALUE
                             The loglevel to use.
                               Allowed values:
                                   `Trace`
                                   `Debug`
                                   `Information`
                                   `Warning`
                                   `Error`
                                   `Critical`
                                   `None`
                               Default: `Information`.
      --lfm, --logformat, --LogFormat=VALUE
                             The log format to use when writing to the console.
                               Allowed values:
                                   `simple`
                                   `syslog`
                                   `systemd`
                               Default: `simple`.
      --di, --diagnosticsinterval, --DiagnosticsInterval=VALUE
                             Produce publisher diagnostic information at this
                               specified interval in seconds.
                               By default diagnostics are written to the OPC
                               Publisher logger (which requires at least --
                               loglevel `information`) unless configured
                               differently using `--pd`.
                               `0` disables diagnostic output.
                               Default:60000 (60 seconds).
                               Also can be set using `DiagnosticsInterval`
                               environment variable in the form of a duration
                               string in the form `[d.]hh:mm:ss[.fffffff]`".
      --pd, --diagnosticstarget, --DiagnosticsTarget=VALUE
                             Configures how to emit diagnostics information at
                               the `--di` configured interval.
                               Use this to for example emit diagnostics as
                               events to the event topic template instead of
                               the console.
                               Allowed values:
                                   `Logger`
                                   `Events`
                               Default: `Logger`.
      --dr, --disableresourcemonitoring, --DisableResourceMonitoring[=VALUE]
                             Disable resource monitoring as part of the
                               diagnostics output and metrics.
                               Default: `false` (enabled).
      --ln, --lognotifications[=VALUE]
                             Log ingress subscription notifications at
                               Informational level to aid debugging.
                               Default: `disabled`.
      --lnh, --lognotificationsandheartbeats[=VALUE]
                             Include heartbeats in notifications log.
                               If set also implicitly enables debug logging via
                               `--ln`.
                               Default: `disabled`.
      --lnf, --lognotificationfilter[=VALUE]
                             Only log notifications where the data set field
                               name, subscription name, or data set name match
                               the provided regular expression pattern.
                               If set implicitly enables debug logging via `--
                               ln`.
                               Default: `null` (matches all).
      --len, --logencodednotifications[=VALUE]
                             Log encoded subscription and monitored item
                               notifications at Informational level to aid
                               debugging.
                               Default: `disabled`.
      --sl, --opcstacklogging, --EnableOpcUaStackLogging[=VALUE]
                             Enable opc ua stack logging beyond logging at
                               error level.
                               Default: `disabled`.
      --ksf, --keysetlogfolder, --OpcUaKeySetLogFolderName[=VALUE]
                             Writes negotiated symmetric keys for all running
                               client connection to this file.
                               The file can be loaded by Wireshark 4.3 and used
                               to decrypt encrypted channels when analyzing
                               network traffic captures.
                               Note that enabling this feature presents a
                               security risk!
                               Default: `disabled`.
      --ecw, --enableconsolewriter, --EnableConsoleWriter[=VALUE]
                             Enable writing encoded messages to standard error
                               log through the filesystem transport (must
                               enable via `-t FileSystem` and `-o` must be set
                               to either `stderr` or `stdout`).
                               Default: `false`.
      --oc, --otlpcollector, --OtlpCollectorEndpoint=VALUE
                             Specifiy the OpenTelemetry collector grpc endpoint
                               url to export diagnostics to.
                               Default: `disabled`.
      --oxi, --otlpexportinterval, --OtlpExportIntervalMilliseconds=VALUE
                             The interval in milliseconds when OpenTelemetry is
                               exported to the collector endpoint.
                               Default: `15000` (15 seconds).
      --mms, --maxmetricstreams, --OtlpMaxMetricStreams=VALUE
                             Specifiy the max number of streams to collect in
                               the default view.
                               Default: `4000`.
      --em, --enableprometheusendpoint, --EnableMetrics[=VALUE]
                             Explicitly enable or disable exporting prometheus
                               metrics directly on the standard path.
                               Default: `disabled` if Otlp collector is
                               configured, otherwise `enabled`.
      --ari, --addruntimeinstrumentation, --OtlpRuntimeInstrumentation[=VALUE]
                             Include metrics captured for the underlying
                               runtime and web server.
                               Default: `False`.
      --ats, --addtotalsuffix, --OtlpTotalNameSuffixForCounters[=VALUE]
                             Add total suffix to all counter instrument names
                               when exporting metrics via prometheus exporter.
                               Default: `False`.

Currently supported combinations of --mm snd --me can be found here.