Eclipse Milo: How to use the Discovery Feature of OPC UA?












2















I have some questions about the discovery feature of OPC UA:




  1. How do I register a OPC UA-server on a discovery-server? Is this
    only possible, if the manufacturer provides something like a web
    interface for that, or is there a standardized way to do it?

  2. How do I register a OPC UA-server, which is created with milo, on a discovery-server?

  3. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?

  4. How to get informations about the registered servers with milo?










share|improve this question





























    2















    I have some questions about the discovery feature of OPC UA:




    1. How do I register a OPC UA-server on a discovery-server? Is this
      only possible, if the manufacturer provides something like a web
      interface for that, or is there a standardized way to do it?

    2. How do I register a OPC UA-server, which is created with milo, on a discovery-server?

    3. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?

    4. How to get informations about the registered servers with milo?










    share|improve this question



























      2












      2








      2








      I have some questions about the discovery feature of OPC UA:




      1. How do I register a OPC UA-server on a discovery-server? Is this
        only possible, if the manufacturer provides something like a web
        interface for that, or is there a standardized way to do it?

      2. How do I register a OPC UA-server, which is created with milo, on a discovery-server?

      3. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?

      4. How to get informations about the registered servers with milo?










      share|improve this question
















      I have some questions about the discovery feature of OPC UA:




      1. How do I register a OPC UA-server on a discovery-server? Is this
        only possible, if the manufacturer provides something like a web
        interface for that, or is there a standardized way to do it?

      2. How do I register a OPC UA-server, which is created with milo, on a discovery-server?

      3. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?

      4. How to get informations about the registered servers with milo?







      opc-ua milo






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 8 at 6:29







      Bashdi

















      asked Jan 2 at 7:58









      BashdiBashdi

      205




      205
























          1 Answer
          1






          active

          oldest

          votes


















          1
















          1. How do I register a OPC UA-server on a discovery-server? Is this only possible, if the manufacturer provides something like a web interface for that, or is there a standardized way to do it?




          The manufacturer needs to support the discovery profile. The OPC UA Specification Part 11 (freely avalable after registration: https://opcfoundation.org/developer-tools/specifications-unified-architecture/) describes this in more detail.



          There are three main concepts for OPC UA Discovery:




          • Local Discovery Server (LDS):

            A client needs to know the IP address of the LDS server and then calls the RegisterServer or RegisterServer2 Service via OPC UA.


          • Local Discovery Server with Multicast Extension (LDS-ME):

            Server and client use standardized mDNS multicast queries to find other OPC UA instances in the network. As soon as an LDS-ME server announces itself, a normal OPC UA server knows the IP address and it calls RegisterServer or RegisterServer2


          • Global Discovery Server (GDS):

            For large systems there may be multiple subnets where multicast queries do not work. A GDS is an enterprise wide discovery server which also supports certificate management.





          1. How do I register a OPC UA-server, which is created with milo, on a discovery-server?




          Eclipse Milo does not fully support the discovery features. It basically supports LDS. There is currently an open PR by myself, but unfortunately it is not merged yet: https://github.com/eclipse/milo/pull/89





          1. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?




          Since Eclipse Milo does not support discovery services by default, it is not automatically started. Anyways you can define, which services are supported by adding or removing the corresponding service set. Check out this line:



          stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);


          https://github.com/eclipse/milo/pull/89/files#diff-6eb416ef6889e36b34b34e32cb78b823R122





          1. How to get informations about the registered servers with milo?




          After another server registered itself via RegisterServer or RegisterServer2 a client can retrieve the list of registered servers via two service calls.





          • FindServers returns the list of registered servers, which called RegisterServer or RegisterServer2


          • FindServersOnNetwork is only supported for LDS-ME servers and additionally returns the servers which announced themselves via an mDNS message but did not yet register.




          If you are looking for an open source stack which fully implements the LDS and LDS-ME features, you can have a look at the open62541 project, which is a C/C++ implementation of OPC UA:
          https://github.com/open62541/open62541



          The GDS feature is currently under development for the open62541 stack.
          (Disclaimer: I'm one of the core devs at open62541)



          Additional ressources:



          You can also check out a paper I wrote about the OPC UA LDS-ME Discovery feature and a specific use-case titled OPC UA for Plug & Produce: Automatic Device Discovery using LDS-ME (https://mediatum.ub.tum.de/node?id=1375255)






          share|improve this answer
























          • 11:16:05.177 [main] INFO o.e.milo.opcua.stack.server.tcp.UaTcpStackServer - opc.tcp://127.0.0.1:12686/MiloTest/discovery bound to 127.0.0.1:12686 [None/None] This line in my log confuses me. I thought this is a discovery server

            – Bashdi
            Jan 2 at 10:31








          • 2





            That's the discovery endpoint. All servers need to have an endpoint with no security that a client can call FindServers and GetEndpoints on. Appending /discovery to the base endpoint URL is the standard location defined by the spec.

            – Kevin Herron
            Jan 2 at 12:54











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54003001%2feclipse-milo-how-to-use-the-discovery-feature-of-opc-ua%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1
















          1. How do I register a OPC UA-server on a discovery-server? Is this only possible, if the manufacturer provides something like a web interface for that, or is there a standardized way to do it?




          The manufacturer needs to support the discovery profile. The OPC UA Specification Part 11 (freely avalable after registration: https://opcfoundation.org/developer-tools/specifications-unified-architecture/) describes this in more detail.



          There are three main concepts for OPC UA Discovery:




          • Local Discovery Server (LDS):

            A client needs to know the IP address of the LDS server and then calls the RegisterServer or RegisterServer2 Service via OPC UA.


          • Local Discovery Server with Multicast Extension (LDS-ME):

            Server and client use standardized mDNS multicast queries to find other OPC UA instances in the network. As soon as an LDS-ME server announces itself, a normal OPC UA server knows the IP address and it calls RegisterServer or RegisterServer2


          • Global Discovery Server (GDS):

            For large systems there may be multiple subnets where multicast queries do not work. A GDS is an enterprise wide discovery server which also supports certificate management.





          1. How do I register a OPC UA-server, which is created with milo, on a discovery-server?




          Eclipse Milo does not fully support the discovery features. It basically supports LDS. There is currently an open PR by myself, but unfortunately it is not merged yet: https://github.com/eclipse/milo/pull/89





          1. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?




          Since Eclipse Milo does not support discovery services by default, it is not automatically started. Anyways you can define, which services are supported by adding or removing the corresponding service set. Check out this line:



          stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);


          https://github.com/eclipse/milo/pull/89/files#diff-6eb416ef6889e36b34b34e32cb78b823R122





          1. How to get informations about the registered servers with milo?




          After another server registered itself via RegisterServer or RegisterServer2 a client can retrieve the list of registered servers via two service calls.





          • FindServers returns the list of registered servers, which called RegisterServer or RegisterServer2


          • FindServersOnNetwork is only supported for LDS-ME servers and additionally returns the servers which announced themselves via an mDNS message but did not yet register.




          If you are looking for an open source stack which fully implements the LDS and LDS-ME features, you can have a look at the open62541 project, which is a C/C++ implementation of OPC UA:
          https://github.com/open62541/open62541



          The GDS feature is currently under development for the open62541 stack.
          (Disclaimer: I'm one of the core devs at open62541)



          Additional ressources:



          You can also check out a paper I wrote about the OPC UA LDS-ME Discovery feature and a specific use-case titled OPC UA for Plug & Produce: Automatic Device Discovery using LDS-ME (https://mediatum.ub.tum.de/node?id=1375255)






          share|improve this answer
























          • 11:16:05.177 [main] INFO o.e.milo.opcua.stack.server.tcp.UaTcpStackServer - opc.tcp://127.0.0.1:12686/MiloTest/discovery bound to 127.0.0.1:12686 [None/None] This line in my log confuses me. I thought this is a discovery server

            – Bashdi
            Jan 2 at 10:31








          • 2





            That's the discovery endpoint. All servers need to have an endpoint with no security that a client can call FindServers and GetEndpoints on. Appending /discovery to the base endpoint URL is the standard location defined by the spec.

            – Kevin Herron
            Jan 2 at 12:54
















          1
















          1. How do I register a OPC UA-server on a discovery-server? Is this only possible, if the manufacturer provides something like a web interface for that, or is there a standardized way to do it?




          The manufacturer needs to support the discovery profile. The OPC UA Specification Part 11 (freely avalable after registration: https://opcfoundation.org/developer-tools/specifications-unified-architecture/) describes this in more detail.



          There are three main concepts for OPC UA Discovery:




          • Local Discovery Server (LDS):

            A client needs to know the IP address of the LDS server and then calls the RegisterServer or RegisterServer2 Service via OPC UA.


          • Local Discovery Server with Multicast Extension (LDS-ME):

            Server and client use standardized mDNS multicast queries to find other OPC UA instances in the network. As soon as an LDS-ME server announces itself, a normal OPC UA server knows the IP address and it calls RegisterServer or RegisterServer2


          • Global Discovery Server (GDS):

            For large systems there may be multiple subnets where multicast queries do not work. A GDS is an enterprise wide discovery server which also supports certificate management.





          1. How do I register a OPC UA-server, which is created with milo, on a discovery-server?




          Eclipse Milo does not fully support the discovery features. It basically supports LDS. There is currently an open PR by myself, but unfortunately it is not merged yet: https://github.com/eclipse/milo/pull/89





          1. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?




          Since Eclipse Milo does not support discovery services by default, it is not automatically started. Anyways you can define, which services are supported by adding or removing the corresponding service set. Check out this line:



          stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);


          https://github.com/eclipse/milo/pull/89/files#diff-6eb416ef6889e36b34b34e32cb78b823R122





          1. How to get informations about the registered servers with milo?




          After another server registered itself via RegisterServer or RegisterServer2 a client can retrieve the list of registered servers via two service calls.





          • FindServers returns the list of registered servers, which called RegisterServer or RegisterServer2


          • FindServersOnNetwork is only supported for LDS-ME servers and additionally returns the servers which announced themselves via an mDNS message but did not yet register.




          If you are looking for an open source stack which fully implements the LDS and LDS-ME features, you can have a look at the open62541 project, which is a C/C++ implementation of OPC UA:
          https://github.com/open62541/open62541



          The GDS feature is currently under development for the open62541 stack.
          (Disclaimer: I'm one of the core devs at open62541)



          Additional ressources:



          You can also check out a paper I wrote about the OPC UA LDS-ME Discovery feature and a specific use-case titled OPC UA for Plug & Produce: Automatic Device Discovery using LDS-ME (https://mediatum.ub.tum.de/node?id=1375255)






          share|improve this answer
























          • 11:16:05.177 [main] INFO o.e.milo.opcua.stack.server.tcp.UaTcpStackServer - opc.tcp://127.0.0.1:12686/MiloTest/discovery bound to 127.0.0.1:12686 [None/None] This line in my log confuses me. I thought this is a discovery server

            – Bashdi
            Jan 2 at 10:31








          • 2





            That's the discovery endpoint. All servers need to have an endpoint with no security that a client can call FindServers and GetEndpoints on. Appending /discovery to the base endpoint URL is the standard location defined by the spec.

            – Kevin Herron
            Jan 2 at 12:54














          1












          1








          1









          1. How do I register a OPC UA-server on a discovery-server? Is this only possible, if the manufacturer provides something like a web interface for that, or is there a standardized way to do it?




          The manufacturer needs to support the discovery profile. The OPC UA Specification Part 11 (freely avalable after registration: https://opcfoundation.org/developer-tools/specifications-unified-architecture/) describes this in more detail.



          There are three main concepts for OPC UA Discovery:




          • Local Discovery Server (LDS):

            A client needs to know the IP address of the LDS server and then calls the RegisterServer or RegisterServer2 Service via OPC UA.


          • Local Discovery Server with Multicast Extension (LDS-ME):

            Server and client use standardized mDNS multicast queries to find other OPC UA instances in the network. As soon as an LDS-ME server announces itself, a normal OPC UA server knows the IP address and it calls RegisterServer or RegisterServer2


          • Global Discovery Server (GDS):

            For large systems there may be multiple subnets where multicast queries do not work. A GDS is an enterprise wide discovery server which also supports certificate management.





          1. How do I register a OPC UA-server, which is created with milo, on a discovery-server?




          Eclipse Milo does not fully support the discovery features. It basically supports LDS. There is currently an open PR by myself, but unfortunately it is not merged yet: https://github.com/eclipse/milo/pull/89





          1. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?




          Since Eclipse Milo does not support discovery services by default, it is not automatically started. Anyways you can define, which services are supported by adding or removing the corresponding service set. Check out this line:



          stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);


          https://github.com/eclipse/milo/pull/89/files#diff-6eb416ef6889e36b34b34e32cb78b823R122





          1. How to get informations about the registered servers with milo?




          After another server registered itself via RegisterServer or RegisterServer2 a client can retrieve the list of registered servers via two service calls.





          • FindServers returns the list of registered servers, which called RegisterServer or RegisterServer2


          • FindServersOnNetwork is only supported for LDS-ME servers and additionally returns the servers which announced themselves via an mDNS message but did not yet register.




          If you are looking for an open source stack which fully implements the LDS and LDS-ME features, you can have a look at the open62541 project, which is a C/C++ implementation of OPC UA:
          https://github.com/open62541/open62541



          The GDS feature is currently under development for the open62541 stack.
          (Disclaimer: I'm one of the core devs at open62541)



          Additional ressources:



          You can also check out a paper I wrote about the OPC UA LDS-ME Discovery feature and a specific use-case titled OPC UA for Plug & Produce: Automatic Device Discovery using LDS-ME (https://mediatum.ub.tum.de/node?id=1375255)






          share|improve this answer















          1. How do I register a OPC UA-server on a discovery-server? Is this only possible, if the manufacturer provides something like a web interface for that, or is there a standardized way to do it?




          The manufacturer needs to support the discovery profile. The OPC UA Specification Part 11 (freely avalable after registration: https://opcfoundation.org/developer-tools/specifications-unified-architecture/) describes this in more detail.



          There are three main concepts for OPC UA Discovery:




          • Local Discovery Server (LDS):

            A client needs to know the IP address of the LDS server and then calls the RegisterServer or RegisterServer2 Service via OPC UA.


          • Local Discovery Server with Multicast Extension (LDS-ME):

            Server and client use standardized mDNS multicast queries to find other OPC UA instances in the network. As soon as an LDS-ME server announces itself, a normal OPC UA server knows the IP address and it calls RegisterServer or RegisterServer2


          • Global Discovery Server (GDS):

            For large systems there may be multiple subnets where multicast queries do not work. A GDS is an enterprise wide discovery server which also supports certificate management.





          1. How do I register a OPC UA-server, which is created with milo, on a discovery-server?




          Eclipse Milo does not fully support the discovery features. It basically supports LDS. There is currently an open PR by myself, but unfortunately it is not merged yet: https://github.com/eclipse/milo/pull/89





          1. Is it possible to disable the discovery-server which is automatically started with a milo opc ua-server?




          Since Eclipse Milo does not support discovery services by default, it is not automatically started. Anyways you can define, which services are supported by adding or removing the corresponding service set. Check out this line:



          stackServer.addServiceSet((DiscoveryServiceSet) sessionManager);


          https://github.com/eclipse/milo/pull/89/files#diff-6eb416ef6889e36b34b34e32cb78b823R122





          1. How to get informations about the registered servers with milo?




          After another server registered itself via RegisterServer or RegisterServer2 a client can retrieve the list of registered servers via two service calls.





          • FindServers returns the list of registered servers, which called RegisterServer or RegisterServer2


          • FindServersOnNetwork is only supported for LDS-ME servers and additionally returns the servers which announced themselves via an mDNS message but did not yet register.




          If you are looking for an open source stack which fully implements the LDS and LDS-ME features, you can have a look at the open62541 project, which is a C/C++ implementation of OPC UA:
          https://github.com/open62541/open62541



          The GDS feature is currently under development for the open62541 stack.
          (Disclaimer: I'm one of the core devs at open62541)



          Additional ressources:



          You can also check out a paper I wrote about the OPC UA LDS-ME Discovery feature and a specific use-case titled OPC UA for Plug & Produce: Automatic Device Discovery using LDS-ME (https://mediatum.ub.tum.de/node?id=1375255)







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 2 at 9:47









          Stefan ProfanterStefan Profanter

          3,29432452




          3,29432452













          • 11:16:05.177 [main] INFO o.e.milo.opcua.stack.server.tcp.UaTcpStackServer - opc.tcp://127.0.0.1:12686/MiloTest/discovery bound to 127.0.0.1:12686 [None/None] This line in my log confuses me. I thought this is a discovery server

            – Bashdi
            Jan 2 at 10:31








          • 2





            That's the discovery endpoint. All servers need to have an endpoint with no security that a client can call FindServers and GetEndpoints on. Appending /discovery to the base endpoint URL is the standard location defined by the spec.

            – Kevin Herron
            Jan 2 at 12:54



















          • 11:16:05.177 [main] INFO o.e.milo.opcua.stack.server.tcp.UaTcpStackServer - opc.tcp://127.0.0.1:12686/MiloTest/discovery bound to 127.0.0.1:12686 [None/None] This line in my log confuses me. I thought this is a discovery server

            – Bashdi
            Jan 2 at 10:31








          • 2





            That's the discovery endpoint. All servers need to have an endpoint with no security that a client can call FindServers and GetEndpoints on. Appending /discovery to the base endpoint URL is the standard location defined by the spec.

            – Kevin Herron
            Jan 2 at 12:54

















          11:16:05.177 [main] INFO o.e.milo.opcua.stack.server.tcp.UaTcpStackServer - opc.tcp://127.0.0.1:12686/MiloTest/discovery bound to 127.0.0.1:12686 [None/None] This line in my log confuses me. I thought this is a discovery server

          – Bashdi
          Jan 2 at 10:31







          11:16:05.177 [main] INFO o.e.milo.opcua.stack.server.tcp.UaTcpStackServer - opc.tcp://127.0.0.1:12686/MiloTest/discovery bound to 127.0.0.1:12686 [None/None] This line in my log confuses me. I thought this is a discovery server

          – Bashdi
          Jan 2 at 10:31






          2




          2





          That's the discovery endpoint. All servers need to have an endpoint with no security that a client can call FindServers and GetEndpoints on. Appending /discovery to the base endpoint URL is the standard location defined by the spec.

          – Kevin Herron
          Jan 2 at 12:54





          That's the discovery endpoint. All servers need to have an endpoint with no security that a client can call FindServers and GetEndpoints on. Appending /discovery to the base endpoint URL is the standard location defined by the spec.

          – Kevin Herron
          Jan 2 at 12:54




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54003001%2feclipse-milo-how-to-use-the-discovery-feature-of-opc-ua%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas