hivemq / hivemq-edge

HiveMQ Edge is an MQTT gateway that enables interoperability between OT devices and IT systems. It translates diverse protocols into MQTT for streamlined communication and helps organize data into a unified namespace, making managing and streaming data across your infrastructure easier.
http://hivemq.com
Apache License 2.0
104 stars 23 forks source link

OPC UA Protocol Adapter - Subscribe directly to FolderType objects #342

Open prairiesnpr opened 6 months ago

prairiesnpr commented 6 months ago

Problem or use case

When configuring subscriptions for the OPC UA protocol adapter, it would be cleaner to subscribe to an object, in this case of type FolderType, instead of subscribing to each individual tag.

For example, if I want to subscribe to Tag.P101, I need to subscribe to the following tags.

This counts against the 100 subscription limit, and causes the UI to lag when you are at the maximum subscriptions as well as being way more work to configure if you want to return all tags in a folder.

Attempting to subscribe to Tag.P101 will return an Invalid Address error.

Preferred solution or suggestions

Enable subscriptions to the root tag. Looking through the docs, it specifies the return JSON for an object, but maybe this doesn't include FolderType objects.

DC2-DanielKrueger commented 2 months ago

Hallo @prairiesnpr ,

I looked into the problem and believe milo does not support subscribing to an object node unless for events created on that node. In fact I believe opcua does not support that at least in the 1.3 version which milo targets with their official releases.

The only possibility I see is to browse the referenced nodes, collect them and create a MonitoredItem for each of them. What attributes of these nodes are interesting for you? Only the Value attribute of the "child" nodes?

The return type of object is needed to be able to represent complex custom data types (like structs/ExtensionObjects). Even the standard QualifiedName datatype needs an object as it has two fields.

Best regards, Daniel