Skip to content

Azure Industrial IoT OPC Publisher 2.9.0

Compare
Choose a tag to compare
@marcschier marcschier released this 14 Jul 06:31

We are pleased to announce the release of version 2.9.0 of OPC Publisher. This is the next major iteration of the Industrial IoT Platform and is the result of feedback received from partners and community. This release combines all separate Azure IoT Edge modules we shipped in 2.8 into a single OPC Publisher module. The cloud services previously shipped have also been combined into a single Web-API service that can be deployed as an Azure App Service.

OPC Publisher 2.9.0 is a drop-in replacement for OPC Publisher 2.8.7. In addition to backwards compatibility, it is based on a modern foundation including .net 7, using latest analyzers and nullable type annotations, ASP.net core and the most recent OPC UA .net stack and comes with many new and heavily requested features.

New in 2.9.0

  • Alarms and Events support. You can now subscribe to events in addition to value changes and in the familiar ways using the published nodes json configuration and direct methods.
  • Dead band filtering. We introduced data change triggers in 2.8.4 and are now supporting the full data change filter configuration to configure percent and absolute dead band as defined in OPC UA.
  • Standards compliant. We now support a Strict mode to make OPC Publisher adhere to OPC UA Part 14 and Part 6, including message formats and data type serialization. It is recommended to enable this setting in all new deployments. In addition
    • The publisher id in each message is now always the same value across all writer groups rather than previously where a random GUID was used per writer group when a publisher id was not configured.
    • OPC Publisher provides full support for UADP network message encoding, as well as reversible Json profiles (JsonReversible). We added support for smaller network messages by removing network message and dataset message headers (adding new MessageType.RawDataset and MessageType.DataSetMessages).
    • New support for gzip encoded Json (MessageEncoding.JsonGzip and MessageEncoding.JsonReversibleGzip) to compress JSON without resorting to UADP.
  • Send additional extension fields as part of dataset message and enable free form configuration of extension fields #1940
  • We brought back support for --sf and SkipFirst property to skip the first data change notification to be sent when subscription is created which we dropped in OPC Publisher 2.6.
  • Ability to run all edge modules without micro services #464
    • OPC Discovery has been included into the OPC Publisher module.
    • OPC Twin has been included into the OPC Publisher module, the container name must be updated to refer to OPC Publisher.
    • Support for opc-twin module api direct method calls with input arguments (not requiring OPC Twin micro services) #1512, #996, #464
  • New APIs to enable additional scenarios:
    • A new synchronous FindServer API has been added to allow discovery by discovery url through a single API call.
    • Support for a new TestConnection API to test a connection to a server and receiving detailed error information back.
    • New API to request opc server's nodes information #1960
  • Support for Reverse Connect #1586
  • New deterministic Heartbeat behavior (heartbeat acts as value change watchdog). #1993
  • With cyclic read support OPC Publisher can now poll data from server periodically rather than subscribing. #1934, #605
  • Cyclic reads and monitored items now also support Registered read to register the node id for faster access in some servers.
  • All micro services have been combined into a single WebAPI with the same resource paths as the 2.8 AKS deployment and all-in-one service.
    • Supervisor, Discoverer entities have been removed, but the API has been layered on top of the publisher entity for backwards compatibility. Do not use these API's anymore.
    • A new RegisterEndpoint API has been added that calls the new sync FindServer API and adds the result into the registry in one call.
    • The telemetry and onboarding processors have been integrated into the WebAPI, but only forwards to SignalR. The secondary event hub has been removed. If you need to post process telemetry you must read telemetry data directly from IoT Hub.
  • New Namespaces for all projects and simplified code structure. There are now 2 SDK projects, one for the OPC Publisher module, and another for the optional cloud WebAPI companion service.
  • Improved and simplified documentation
    • Documentation for the diagnostics output in the new troubleshooting guide #1952
    • Better documentation for REST API call with API Key #1991/#1976/#1504
    • Documentation for --strict mode in OPC Publisher, Better documentation for all other message profiles. #1938
  • dotnet publish can be used to build a docker container for OPC Publisher from the repository #1949
  • This release adds OpenTelemetry exporter for metrics and new instrumentation
    • Metrics and log output showing number of sessions currently active (related to #1923)
    • Metric on OPC Server down or wrong credentials provided #1445
  • Support for iotedgehubdev IoT Edge Simulator environment
    • Fix Can't run OPC UA Publisher standalone module inside IoT Edge Simulator environment (iotedgehubdev) #1708
    • No BypassCertVerification required in Simulation with VS Code / iotedgehubdev #1922
    • Fix standalone OPC-Publisher in Edge Simulator doesn't work #1999
  • Application uri of the publisher is now unique in a deployment. #1986
  • Publisher will now prefer the endpoint matching the configured endpoint url instead of picking the first in the list. #2013
  • JSON encoder now uses G8/17 to serialize float/double for precision Float/Double Serializer #1709
  • Many new configuration options and 2.9 configuration schema extensions
    • Configuration can now specify published nodes using browse path #47
    • DisplayName values defined for the event fields in pn.json are now used as keys in the payload of dataset messages (#1963)
    • Ability to select the namespace format for nodes and qualified names to switch between nsu and ns index format like ns=1;s=CycleCounter using API and telemetry #1057
    • Option to directly enable subscription during create rather than using SetPublishingMode request. #1773
    • Option to enable swagger UI in release build publishers. #2009
    • Select security mode and profile in configuration #2008
    • Command line option to disable complex type loading. #1953

This release is based on the latest .net 7 foundation and comes with all latest nuget dependencies. It has passed all our tests, nevertheless, please let us know if you encounter issues by opening a GitHub issue.