umati / UA-CloudPublisher

umati-fork of OPC UA cloud publisher --- reference implementation leveraging OPC UA PubSub over MQTT. It runs in a Docker container on standard Docker hosts or on Kubernetes and comes with an easy-to-use web user interface.
Other
0 stars 0 forks source link

Mapping spec #54

Open Kantiran91 opened 2 months ago

Kantiran91 commented 2 months ago

Add the Spec for the umati Dashboard PubSub

ccvca commented 2 months ago

How to derive the Topic-Path for specifictions like CNC, where Nodes have multiple BrowsePaths? Whats the topic of Nodes without a BrowsePath (e.g. Events that are not hierarchical connected to the address space)

GoetzGoerisch commented 2 months ago

@Kantiran91 could you please rebase onto of the latest develop?

Kantiran91 commented 2 months ago

How to derive the Topic-Path for specifictions like CNC, where Nodes have multiple BrowsePaths? Whats the topic of Nodes without a BrowsePath (e.g. Events that are not hierarchical connected to the address space)

For multiple BrowsePath I add a field in the description. An other solution (also with some problems) to send the same message to different topics.

Topic of Nodes without a BrowsePath are currently not described. For Event a solution to use the BrowsePath of the SourceNode as Topic.

wlkrm commented 2 months ago

Additional Questions from @ccvca and me:

Kantiran91 commented 2 months ago

Additional Questions from @ccvca and me:

  • Use NodeId as topics?

Than you have a lots of topic without a semantic and this make debugging an mapping more complex

  • How to identify machine dataset to find entry point for reconstruction

With the TypeDefinition

  • How do you handle inheritance, i.e., custom types based on spec types? Publish ObjectTypeDefinition address space part

Currently we also have not add this information. We can add a Field for that.

wlkrm commented 2 months ago

Additional Questions from @ccvca and me:

  • Use NodeId as topics?

Than you have a lots of topic without a semantic and this make debugging an mapping more complex

Yes, our concern is, that using non-unique BorwsePaths isn't a good semantic as well. Is this problem solved by the current mapping?

  • How to identify machine dataset to find entry point for reconstruction

With the TypeDefinition

See below. How to know, which level of inheritance is the one to include in the TypeDefinition?

  • How do you handle inheritance, i.e., custom types based on spec types? Publish ObjectTypeDefinition address space part

Currently we also have not add this information. We can add a Field for that.

Not sure if a field is enough, how would one know, which level in the hierarchy is the correct "Spec"-TypeDefinition. We had some issues with that in the past, because essentially you cannot know, which is the correct level in the hierarchy. Ideally we would expose the AddressSpace part of the Types as well to be prepared...

Kantiran91 commented 2 months ago

Additional Questions from @ccvca and me:

  • Use NodeId as topics?

Than you have a lots of topic without a semantic and this make debugging an mapping more complex

Yes, our concern is, that using non-unique BorwsePaths isn't a good semantic as well. Is this problem solved by the current mapping?

The last solution is that we use the HierachicalReference to create an subtopic (I will change the spec tomorrow) and the BrowseName as TopicName with an Itteration if more as one fit. The unique identification should be done in the MetaData (Including NodeId and BrowsePath).

  • How to identify machine dataset to find entry point for reconstruction

With the TypeDefinition

See below. How to know, which level of inheritance is the one to include in the TypeDefinition?

  • How do you handle inheritance, i.e., custom types based on spec types? Publish ObjectTypeDefinition address space part

Currently we also have not add this information. We can add a Field for that.

Not sure if a field is enough, how would one know, which level in the hierarchy is the correct "Spec"-TypeDefinition. We had some issues with that in the past, because essentially you cannot know, which is the correct level in the hierarchy. Ideally we would expose the AddressSpace part of the Types as well to be prepared...

Yes I think we should give the complete inheritance tree in this field as Array. And as second field also the Implemented Interfaces.

Kantiran91 commented 2 months ago

other open Question? How to handle removed object/DataSets

Kantiran91 commented 1 month ago

@wlkrm @GoetzGoerisch I add all variants to the spec. Can you please look at the document again. I will send it end of the week to the opc foundation

wlkrm commented 1 month ago

I cannot really tell whether all of @ccvca and mine comments were considered but otherwise LGTM

GoetzGoerisch commented 1 week ago

@Kantiran91 how are the next steps here?