Giter VIP home page Giter VIP logo

Comments (14)

InstantlyMoist avatar InstantlyMoist commented on June 13, 2024 2

It's coming from 800xA

image

from node-opcua.

mm-mbinder avatar mm-mbinder commented on June 13, 2024 1

That may very well be the case. Just for completeness sake: yes, display name and browse name is the same for these nodes.
image
I am not really deep into OPC UA, so i can't really evaluate the stuff some device manufacturers do, but it seems to me that there are cases where browse names do include white space. For better or for worse.

from node-opcua.

InstantlyMoist avatar InstantlyMoist commented on June 13, 2024

Another useful thing might be that I've also tested putting ' and " around in the string, also in combination with %20 which should be the url-encoded equivalent to a space. Neither of them worked.

EDIT: I escaped the quotes using a backslash, github removes them for some reason

from node-opcua.

InstantlyMoist avatar InstantlyMoist commented on June 13, 2024

Hi!

Hope you are doing well, I was wondering if I could do something to help solving this issue? I'm not too familiar with with typescript but I would be glad to help. Currently I'm falling back to nodeIds but for my internship projects using the browsePaths is a pretty big must.

from node-opcua.

AndreasHeine avatar AndreasHeine commented on June 13, 2024

to be honest i have never seen spaces in a BrowseName!?
its uasually upper camelcase.

what server is it?
is it a common model (companion spec.)?
is it a custom own created model?

from node-opcua.

AndreasHeine avatar AndreasHeine commented on June 13, 2024

All BrowseNames should be upper camel case (also known as PascalCase), that is, all words written without spaces, and the first character of each word is upper case, the other characters are lower case.

https://opcconnect.opcfoundation.org/2020/09/opc-ua-modelling-best-practices/

from node-opcua.

mm-mbinder avatar mm-mbinder commented on June 13, 2024

Hi, i experienced the same issue this week.
In my case the server is created by a PLC, so it follows the PLCopen companion spec from my knowledge. The manufacturer of the device uses the device model name some of the browse names. The manufacturer does this for all its devices from my knowledge.
image
When i try to use translateBrowsePath there it returns an error.
For now i just browse recursively to resolve the nodes i need.

from node-opcua.

GoetzGoerisch avatar GoetzGoerisch commented on June 13, 2024

What is typically shown in UI tools is the Displayname. Here spaces are allowed.
The BrowseName on the other hand need to follow the rules @AndreasHeine posted.

from node-opcua.

AndreasHeine avatar AndreasHeine commented on June 13, 2024

it actually violates the OPC-F Moddelling best practises...

i assume wago uses the browsename like the displayname which is not according to the spec...

https://reference.opcfoundation.org/Core/Part3/v104/docs/5.2.4

A BrowseName should never be used to display the name of a Node. The DisplayName should be used instead for this purpose.

from node-opcua.

AndreasHeine avatar AndreasHeine commented on June 13, 2024

@GoetzGoerisch we need a tool to validate model compliance!? does the OPC-F Certification require model checks?

from node-opcua.

GoetzGoerisch avatar GoetzGoerisch commented on June 13, 2024

They typically do so.

from node-opcua.

InstantlyMoist avatar InstantlyMoist commented on June 13, 2024

Would this be something that can be fixed code-wise? As I don't have any freedom over the systems I'm listening to :D

from node-opcua.

erossignon avatar erossignon commented on June 13, 2024

An immediate workaround is to build the BrowsePath datastructure directly without using the makeBrowsePath helper function.

from node-opcua.

erossignon avatar erossignon commented on June 13, 2024

@InstantlyMoist,

The issue is not related to the "space" , in fact I confirm that <space>'s are properly handled in makeBrowsePath.

In fact, Root and Control Network are browseNames defined in a namespace that is not the default namespace. For this reason, you need to prefix the text part with the namespace index and the ':' separator.

-let browsePath = "/Objects/Root/Control Network";
+let browsePath = "/Objects/2:Root/3:Control Network";
let actualBrowsePath = makeBrowsePath("RootFolder", browsePath); 

from node-opcua.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.