Hello,
I understand the first and second half of your post separately, but I do not know how they relate. So, I will answer them as they are, and maybe something comes out of it.
1. How to identify the "source" of DataChangeNotification. There are many ways to do it, or their combinations:
a) Each event notification carries a copy of the arguments that were used to make the subscription, including the node descriptor. Example:
opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...es%20for%20data%20changes.html . You can see theat in the event handler, e.Arguments.NodeDescriptor is printed out, allowing to distinguish the sources. Depending on what you have used to subscribe to the node, there is a valid NodeId, or BrowsePath (or bnoth) inside the node descriptor.
b) There are overloads of the SubscribeXXXX that allow you to pass in an arbitrary State object, and this object is then available (inside the e.Arguments again) to you in the event notifications.
c) You can use callbacks instead of event handlers, and use a different callback for different items. Example:
opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...back%20using%20a%20lambda.html .
If you need the BrowseName or DisplayName (or any other) attribute of the node, you can read it. Example of reading specific attributes:
opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...%20of%20a%20single%20node.html . But, it would not be a good idea to do so inside the DataChangeNotification event handler. If you really need it, read these attributes before you make the subscription, because they do not change. Also note that you have mentioned the BrowsePath attribute, but there is no such attribute in OPC UA. This is a principal thing - a node cannot have a (single) BrowsePath associated with it, because there can be many (in fact, sometime infinite number of) browse paths that lead to the same node. The browse path is something that *you* need to construct in your code first .
2. The error is telling you that the namespace you have used to identify the node (nsu=http://statusenterprise.com/StatusServer ) is incorrect - the server does not know such namespace. Check the spelling - and check that you understand the actual concept:
-
opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...tml#OPC%20UA%20Node%20IDs.html
-
opclabs.doc-that.com/files/onlinedocs/QuickOpc/Latest/User%2...indices%20in%20Node%20Ids.html
You took the NamespaceUriString from item.NodeAddress , but I do not know what that is. Besides, it looks weird that you would take namespace URI from somewhere, but still kept the namespaceindex (ns=3) from elsewhere. What is it that you are trying to achieve here?
Best regards