Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "BaSyx / Examples"

m (Adds link to docker documentation)
m (Adds new snippets)
 
(8 intermediate revisions by 4 users not shown)
Line 3: Line 3:
 
== Code snippets ==
 
== Code snippets ==
  
Code snippets are simple, isolated use-cases that illustrate the use of Eclipse BaSyx. They provide focused recipes that document the intended use of the BaSyx SDK and our reference implementations of Industrie 4.0 middleware components. To keep functional examples simple, code snippets only address selected aspects of Industrie 4.0 implementations. Selected snippets provide a page with documentation. For all snippets, links to executable source code files in the git repository are provided. The source code may contain required drivers and stubs for running the code, as well as testing routines that validate the results of the execution.
+
Code snippets are simple, isolated use-cases that illustrate the use of Eclipse BaSyx. They provide focused recipes that document the intended use of the BaSyx SDK and our reference implementations of Industrie 4.0 middleware components. To keep functional examples simple, code snippets only address selected aspects of Industrie 4.0 implementations. Selected snippets provide a page with documentation. For all snippets, links to executable source code files in the git repository are provided. The snippets itself only contain the code necessary to fulfil their function. Examples on how to use the snippets can be found in the [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets tests] for the snippets.
  
 
Please keep in mind that not all features are available with all language versions of Eclipse BaSyx. Snippets therefore may only be available for selected languages.  
 
Please keep in mind that not all features are available with all language versions of Eclipse BaSyx. Snippets therefore may only be available for selected languages.  
Line 12: Line 12:
  
  
 +
===Asset Administration Shell (AAS)===
  
=== Virtual Automation Bus (VAB)===
+
The Asset Administration Shell snippets illustrate different aspects of the usage of the Asset Administration Shell.  
 
+
The Virtual Automation Bus provides end-to-end connection capabilities. The VAB uses gateways to connect network technologies into one virtual, and fully connected network. The network consists of objects, e.g. Asset Administration Shells and sub models that are accessible through unqiue IDs. The following code snippets illustrate VAB operations and the use of the Virtual Automation Bus.
+
  
 
{|
 
{|
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
| style="width:20em" | ''Snippet'' || style="width:45em" | ''Description'' || tyle="width:20em" | ''Source''
 +
|-
 +
| ​ || ​ || ​
 
|-
 
|-
| CRUD operations || || Illustrate creation of VAB object and use of create/update/retrieve/delete operations to manipulate it. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/CRUDOperations.java Java]
+
| Create AAS  || Illustrates how to create an Asset Administration Shell by instantiating a new AAS object. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/aas/CreateAAS.java Java]
 
|-
 
|-
| Manual HTTP calls || || Illustrate manual HTTP operations to access VAB objects via HTTP REST interface || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/ManualHTTPCalls.java Java]
+
| ​ || ​ || ​
 
|-
 
|-
| Dynamic property (Lambda) || || Illustrate dynamic properties (Lambda expression) in VAB objects. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyLambda.java Java]
+
| Add Submodel to AAS || Illustrates how to add a Submodel to an AAS object. If the AAS, the Submodel should be added to, is a ConnectedAAS (the actual AAS data is held on a server) this will upload the Submodel to the server, but not register it. You have to register it manually (see Register Submodel Snippet). Alternatively you can use the use the AASManager to add it (see Manager Snippets below), which will automatically register it. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/aas/AddSubmodelToAAS.java Java]
 +
|-
 +
| ​ ||  ​ || ​
 
|-
 
|-
| Dynamic property (Class) || || Illustrate the dynamic properties (Class) in VAB objects. ||  
+
| Retrieve Submodel from AAS || Illustrates how to retrieve a Submodel from an AAS object. If the Submodel to be retrieved is located on a server it is often easier to use the AASManager (see Manager Snippets below) to retrieve it, as you can get the Submodel directly without getting the AAS first. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/aas/RetrieveSubmodelFromAAS.java Java]
[https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyClass.java Java]
+
|-
 +
| ​ || ​ || ​
 +
|-
 +
| Delete Submodel from AAS || Illustrates how to delete a Submodel from an AAS object. If the AAS the Submodel should be deleted from is a ConnectedAAS (the actual AAS data is held on a server) this will delete the Submodel from the server, but not deregister it. You have to deregister it manually (see Deregister Submodel Snippet). Alternatively you can use the use the AASManager to delete it (see Manager Snippets below), which will automatically deregister it. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/aas/DeleteSubmodelFromAAS.java Java]
 
|}
 
|}
  
  
  
===Asset Administration Shell (AAS)===  
+
===AAS Manager===  
  
The Asset Administration Shell snippets illustrate the creation of Asset Administration Shells using tools of the BaSyx SDKs.  
+
These code snippets illustrate how to use the ConnectedAssetAdministrationShellManager for interacting with BaSyx elements hosted on a server.
  
 
{|
 
{|
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
| style="width:20em" | ''Snippet'' || style="width:45em" | ''Description'' || style="width:20em" | ''Source''
|-  
+
|-
| Create AAS || [[BaSyx.Examples.Snippets.AASCreation.Java | (Java)]] || Creation of Asset Administration Shell by extending SDK class  || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/CreateAAS.java Java]
+
| ​ || ​ || ​
|-  
+
|-
| Create AAS on the fly || || Creation of Asset Administration Shell by setting properties of predefined AAS class  || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/AccessAASProperties.java Java]
+
| Push AAS to server || Illustrates how to upload an AAS to a server || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/manager/PushAASToServer.java Java]
 +
|-
 +
| ​ || ​ || ​
 +
|-
 +
| Retrieve AAS || Illustrates how to retrieve an AAS from a server using its ID. The retrieved AAS object will be a ConnectedAAS. This "connected" object holds no data locally. Instead it contacts the server for every data transaction. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/manager/RetrieveAAS.java Java]
 +
|-
 +
| ​ || ​ || ​
 +
|-
 +
| Delete AAS || Illustrates how to delete an Asset Administration Shell from a server. This will also automatically deregister the AAS. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/manager/DeleteAAS.java Java]
 +
|-
 +
| ​ || ​ || ​
 +
|-
 +
| Add Submodel to AAS || Illustrates how to add a Submodel to an AAS on a server. This will upload the given Submodel to the server and register it to the AAS with the given ID. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/manager/AddSubmodelToAAS.java Java]
 +
|-
 +
| ​ || ​ || ​
 +
|-
 +
| Retrieve Submodel from AAS || Illustrates how to retrieve Submodels from a server using its ID and the ID of the AAS it belongs to. The retrieved Submodel object will be a ConnectedSubmodel. This "connected" object holds no data locally. Instead it contacts the server for every data transaction. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/manager/RetrieveSubmodelFromAAS.java Java]
 +
|-
 +
| ​ || ​ || ​
 +
|-
 +
| Delete Submodel from AAS || Illustrates how to delete a Submodel from an AAS on a server. This will delete the Submodel with the given ID from the AAS with the given ID. It will also automatically deregister the Submodel. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/manager/DeleteSubmodelFromAAS.java Java]
 
|}
 
|}
  
  
  
===Asset Administration Shell HTTP server deployment===  
+
===AAS Submodels===
  
These code snippets illustrate Asset Administration Shells in context of HTTP servers. It is common to deploy an Asset Administration Shell to the IT to ensure its presence when a device fails. HTTP servers are available hosts for Asset Administration Shells. The following code snippets illustrate the dynamic creation of an Asset Administratuion Shell, its transfer, and its use from Industrie 4.0 applications.  
+
Asset Administration Shell Submodels may be distributed through the network. While an AAS resides on the IT and remains accessible in case of device failures, Submodels may be distributed. Submodels containing static data or information about devices that needs to remain available in case of device failure may be hosted on the IT as well; Submodels containing live data may be hosted on devices, and possibly on products. The following code snippets illustrate the creation, transfer, hosting, and use of AAS Submodels.
  
 
{|
 
{|
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
| style="width:20em" | ''Snippet'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
 +
| ​ || ​ || ​
 
|-
 
|-
| Connect to remote AAS || [[BaSyx.Examples.Snippets.AASConnection.Java | (Java)]] || Illustrate connection to Asset Administration Shell with SDK connector || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/http/ConnectToRemoteAAS.java Java]
+
| Create Submodel || Illustrates how to create a Submodel by instantiating a new Submodel object. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/submodel/CreateSubmodel.java Java]
|}
+
 
+
===Asset Administration Shell deployment on Device===
+
 
+
Instead of an HTTP server, Asset Administration Shells may be deployed to devices that run their own servers to enable access to an AAS. The following code snippets illustrate SDK features to host Asset Administration Shells and sub models on devices. 
+
 
+
{|
+
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
 
|-
 
|-
| Device AAS deployment  || || Dynamic Asset Administration Shell deployment with BaSyx/TCP ||
+
| ​ || ​ || ​
[https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceAASDeployment.java Java]
+
 
|-
 
|-
| Device AAS deployment (VAB) || || Dynamic Asset Administration Shell deployment with BaSyx/TCP using low-level VAB access || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceAASDeploymentVAB.java Java]
+
| Add Submodel element || Illustrates how to add a Submodel element to a Submodel object || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/submodel/AddSubmodelElement.java Java]
 
|-
 
|-
| Device sub model deployment || || Dynamic deployment of sub model on Device using a BaSyx/TCP protocol server || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeployment.java Java]
+
| ​ || ​ || ​
 
|-
 
|-
| Device sub model deployment (VAB) ||  || Dynamic deployment of sub model on Device using a BaSyx/TCP protocol server (VAB access) || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeploymentVAB.java Java]
+
| Retrieve Submodel element || Illustrates how to retrieve a Submodel element from a Submodel object || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/submodel/RetrieveSubmodelElement.java Java]
 +
|-
 +
| ​ || ​ || ​
 +
|-
 +
| Delete Submodel element || Illustrates how to delete a Submodel element from a Submodel object || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/submodel/DeleteSubmodelElement.java Java]
 +
|-
 +
| ​  || ​ || ​
 +
|-
 +
| Invoke Submodel operation || Illustrates the invokation of an Operation from Submodel object || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/submodel/ExecuteOperation.java Java]
 +
|-
 +
| ​  || ​ || ​
 +
|-
 +
| Host preconfigured Submodel || Illustrates how a preconfigured submodel can be hosted on its own server || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/submodel/HostPreconfiguredSubmodel.java Java]
 
|}
 
|}
  
  
 +
===Registry===
  
===AAS Sub models===
+
The Asset Administration Shell registry enables registration of AAS and Submodels, as well as retrieving previously registered AAS and Submodels by their IDs.  
 
+
Asset Administration Shell sub models may be distributed through the network. While an AAS resides on the IT and remains accessible in case of device failures, sub models may be distributed. Sub models containing static data or information about devices that needs to remain available in case of device failure may be hosted on the IT as well; sub models containing live data may be hosted on devices, and possibly on products. The following code snippets illustrate the creation, transfer, hosting, and use of AAS sub models.
+
  
 
{|
 
{|
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
| style="width:20em" | ''Snippet'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
 
|-
 
|-
| Create AAS sub model (SDK) || [[BaSyx.Examples.Snippets.AASSMCreation.Java | (Java)]] || Illustrate creation of AAS sub model with SDK factory || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelSDK.java Java]
+
| Register AAS || Register AAS descriptors in registry || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/registry/RegisterAAS.java Java]
 
|-
 
|-
| Create AAS sub model (VAB) || [[BaSyx.Examples.Snippets.AASSMCreation.Java | (Java)]] || Illustrate creation of AAS sub model with VAB primitives || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelVAB.java Java]
+
| Lookup AAS || Retrieve AAS descriptors from registry || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/registry/LookupAAS.java Java]
 
|-
 
|-
| Dynamic sub model deployment (SDK) || || Illustrate dynamic sub model creation and deployment on BaSyx sub model server ||
+
| Deregister AAS || Removes AAS descriptors from registry || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/registry/DeregisterAAS.java Java]
[https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java Java]
+
 
|-
 
|-
| Dynamic sub model deployment (HTTP) || || Illustrate dynamic sub model creation and deployment on BaSyx sub model server ||
+
| Register Submodel || Register a Submodel to an existing AAS descriptor || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/registry/RegisterSubmodel.java Java]
[https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java Java]
+
 
|-
 
|-
| Connect to AAS sub model via SDK || [[BaSyx.Examples.Snippets.AASSMConnection.Java | (Java)]] || Illustrate connection to AAS sub model using SDK connector || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelSDK.java Java]
+
| Lookup Submodel || Retrieve a Submodel from a registry || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/registry/LookupSubmodel.java Java]
 
|-
 
|-
| Connect to AAS sub model via VAB || [[BaSyx.Examples.Snippets.VABAASConnection.Java | (Java)]] || Illustrate connection to AAS using low-level virtual automation bus (VAB) primitives ||
+
| Deregister Submodel || Removes a Submodel from a registry || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/registry/DeregisterSubmodel.java Java]
[https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelVAB.java Java]
+
|-
+
| Invoke sub model operation (SDK) || || Define sub model operation and invoke them via SDK connector ||
+
[https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/InvokeSubModelOperationSDK.java Java]
+
 
|}
 
|}
  
  
  
===AAS Sub model providers===
 
  
Eclipse BaSyx provides pre-created AAS sub model providers. These servlets connect existing data sources, such as textual configuration files and SQL data bases into Industrie 4.0 environments as AAS sub models. BaSyx sub model providers are configured with a configuration API and do not require programming knowledge to integrate data sources into Industrie 4.0 environments as AAS sub models.
+
=== Virtual Automation Bus (VAB)===
  
 
+
The Virtual Automation Bus provides end-to-end connection capabilities. The VAB uses gateways to connect network technologies into one virtual, and fully connected network. The network consists of objects, e.g. Asset Administration Shells and Submodels that are accessible through unqiue IDs. The following code snippets illustrate VAB operations and the use of the Virtual Automation Bus.
 
+
===AAS Sub models (Dynamic)===
+
 
+
Asset Administration Shell sub models may contain dynamic properties and operations. Dynamic properties are properties whose values are generated dynamically at runtime. This may happen for example periodically, or whenever a specific information is requested. Dynamic operations are operations that may be updated at runtime. The following code snippets illustrate dynamic sub model properties and operations.
+
  
 
{|
 
{|
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
| style="width:20em" | ''Snippet'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
 
|-
 
|-
| Dynamic property (Lambda)  ||  || Illustrate dynamic sub model properties (Lambda expression) || N/A
+
| CRUD operations || Illustrate creation of VAB object and use of create/update/retrieve/delete operations to manipulate it. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/CRUDOperations.java Java]
 
|-
 
|-
| Dynamic property (Class) || || Illustrate the dynamic sub model properties (Class) || N/A
+
| Manual HTTP calls || Illustrate manual HTTP operations to access VAB objects via HTTP REST interface || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/ManualHTTPCalls.java Java]
 +
|-
 +
| Dynamic property (Lambda) || Illustrate dynamic properties (Lambda expression) in VAB objects. || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyLambda.java Java]
 +
|-
 +
| Dynamic property (Class) || Illustrate the dynamic properties (Class) in VAB objects. ||  
 +
[https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyClass.java Java]
 
|}
 
|}
  
 +
===AAS Submodel providers===
  
 +
Eclipse BaSyx provides pre-created AAS Submodel providers. These servlets connect existing data sources, such as textual configuration files and SQL data bases into Industrie 4.0 environments as AAS Submodels. BaSyx Submodel providers are configured with a configuration API and do not require programming knowledge to integrate data sources into Industrie 4.0 environments as AAS Submodels.
  
===Registry===
 
  
The Asset Administration Shell registry enables registration of AAS and sub models, as well as retrieving previously registered AAS and sub models by their IDs.  
+
 
 +
===AAS Submodels (Dynamic)===
 +
 
 +
Asset Administration Shell Submodels may contain dynamic properties and operations. Dynamic properties are properties whose values are generated dynamically at runtime. This may happen for example periodically, or whenever a specific information is requested. Dynamic operations are operations that may be updated at runtime. The following code snippets illustrate dynamic Submodel properties and operations.
  
 
{|
 
{|
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
| style="width:20em" | ''Snippet'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
|-
+
| Register and lookup AAS ||  || Register and retrieve AAS descriptors from registry || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/RegisterRetrieveAASEndpoints.java Java]
+
|-
+
| Register AAS descriptor  ||  || Register an AAS descriptor in AAS registry, lookup AAS by ID, and connect to AAS || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToAASEndpoints.java Java]
+
 
|-
 
|-
| Register AAS sub models || || Register an AAS descriptor with sub models, lookup and connect to AAS sub models || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java Java]
+
| Dynamic property (Lambda) || Illustrates the creation and usage of a lambda property (i.e. a property retrieving its value from a backend at runtime) || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/snippets/property/CreateLambdaProperty.java Java]
 
|}
 
|}
  
Line 144: Line 167:
  
 
{|
 
{|
| style="width:20em" | ''Snippet'' || style="width:20em" | ''Additional Documentation'' ||style="width:45em" | ''Description'' || style="width:20em" | ''Source''
+
| style="width:20em" | ''Snippet'' || style="width:45em" | ''Description'' || style="width:20em" | ''Source''
 
|-
 
|-
| Construct URNs ||  || Create URNs for AAS and globally idenfied sub models || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/urn/ConstructURNs.java Java]
+
| Construct URNs ||  Create URNs for AAS and globally idenfied Submodels || [https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/urn/ConstructURNs.java Java]
 
|}
 
|}
  
 
== Deployment with Docker ==
 
== Deployment with Docker ==
 
The deployment of the different SDKs and components with docker is explained in its own [[BaSyx_/_Examples_/_Deployment_With_Docker| page]].
 
The deployment of the different SDKs and components with docker is explained in its own [[BaSyx_/_Examples_/_Deployment_With_Docker| page]].
 +
 +
== Monitoring Applications (AAS Dashboards) ==
 +
The integration with third-party applications & tools enable the possibility to monitor Asset Administration Shell and visualize its data through Dashboards. The integration and its use is explained in here [[https://wiki.eclipse.org/BaSyx_/_Examples_/_Monitoring#Monitoring| page]].

Latest revision as of 05:48, 8 January 2021

Examples

Code snippets

Code snippets are simple, isolated use-cases that illustrate the use of Eclipse BaSyx. They provide focused recipes that document the intended use of the BaSyx SDK and our reference implementations of Industrie 4.0 middleware components. To keep functional examples simple, code snippets only address selected aspects of Industrie 4.0 implementations. Selected snippets provide a page with documentation. For all snippets, links to executable source code files in the git repository are provided. The snippets itself only contain the code necessary to fulfil their function. Examples on how to use the snippets can be found in the tests for the snippets.

Please keep in mind that not all features are available with all language versions of Eclipse BaSyx. Snippets therefore may only be available for selected languages.

The code for the snippets is available via the Eclipse BaSyx GIT repository:

  • For Java, the code is located in the basyx.example project in package org.eclipse.basyx.examples.snippets


Asset Administration Shell (AAS)

The Asset Administration Shell snippets illustrate different aspects of the usage of the Asset Administration Shell.

Snippet Description Source
Create AAS Illustrates how to create an Asset Administration Shell by instantiating a new AAS object. Java
Add Submodel to AAS Illustrates how to add a Submodel to an AAS object. If the AAS, the Submodel should be added to, is a ConnectedAAS (the actual AAS data is held on a server) this will upload the Submodel to the server, but not register it. You have to register it manually (see Register Submodel Snippet). Alternatively you can use the use the AASManager to add it (see Manager Snippets below), which will automatically register it. Java
Retrieve Submodel from AAS Illustrates how to retrieve a Submodel from an AAS object. If the Submodel to be retrieved is located on a server it is often easier to use the AASManager (see Manager Snippets below) to retrieve it, as you can get the Submodel directly without getting the AAS first. Java
Delete Submodel from AAS Illustrates how to delete a Submodel from an AAS object. If the AAS the Submodel should be deleted from is a ConnectedAAS (the actual AAS data is held on a server) this will delete the Submodel from the server, but not deregister it. You have to deregister it manually (see Deregister Submodel Snippet). Alternatively you can use the use the AASManager to delete it (see Manager Snippets below), which will automatically deregister it. Java


AAS Manager

These code snippets illustrate how to use the ConnectedAssetAdministrationShellManager for interacting with BaSyx elements hosted on a server.

Snippet Description Source
Push AAS to server Illustrates how to upload an AAS to a server Java
Retrieve AAS Illustrates how to retrieve an AAS from a server using its ID. The retrieved AAS object will be a ConnectedAAS. This "connected" object holds no data locally. Instead it contacts the server for every data transaction. Java
Delete AAS Illustrates how to delete an Asset Administration Shell from a server. This will also automatically deregister the AAS. Java
Add Submodel to AAS Illustrates how to add a Submodel to an AAS on a server. This will upload the given Submodel to the server and register it to the AAS with the given ID. Java
Retrieve Submodel from AAS Illustrates how to retrieve Submodels from a server using its ID and the ID of the AAS it belongs to. The retrieved Submodel object will be a ConnectedSubmodel. This "connected" object holds no data locally. Instead it contacts the server for every data transaction. Java
Delete Submodel from AAS Illustrates how to delete a Submodel from an AAS on a server. This will delete the Submodel with the given ID from the AAS with the given ID. It will also automatically deregister the Submodel. Java


AAS Submodels

Asset Administration Shell Submodels may be distributed through the network. While an AAS resides on the IT and remains accessible in case of device failures, Submodels may be distributed. Submodels containing static data or information about devices that needs to remain available in case of device failure may be hosted on the IT as well; Submodels containing live data may be hosted on devices, and possibly on products. The following code snippets illustrate the creation, transfer, hosting, and use of AAS Submodels.

Snippet Description Source
Create Submodel Illustrates how to create a Submodel by instantiating a new Submodel object. Java
Add Submodel element Illustrates how to add a Submodel element to a Submodel object Java
Retrieve Submodel element Illustrates how to retrieve a Submodel element from a Submodel object Java
Delete Submodel element Illustrates how to delete a Submodel element from a Submodel object Java
Invoke Submodel operation Illustrates the invokation of an Operation from Submodel object Java
Host preconfigured Submodel Illustrates how a preconfigured submodel can be hosted on its own server Java


Registry

The Asset Administration Shell registry enables registration of AAS and Submodels, as well as retrieving previously registered AAS and Submodels by their IDs.

Snippet Description Source
Register AAS Register AAS descriptors in registry Java
Lookup AAS Retrieve AAS descriptors from registry Java
Deregister AAS Removes AAS descriptors from registry Java
Register Submodel Register a Submodel to an existing AAS descriptor Java
Lookup Submodel Retrieve a Submodel from a registry Java
Deregister Submodel Removes a Submodel from a registry Java



Virtual Automation Bus (VAB)

The Virtual Automation Bus provides end-to-end connection capabilities. The VAB uses gateways to connect network technologies into one virtual, and fully connected network. The network consists of objects, e.g. Asset Administration Shells and Submodels that are accessible through unqiue IDs. The following code snippets illustrate VAB operations and the use of the Virtual Automation Bus.

Snippet Description Source
CRUD operations Illustrate creation of VAB object and use of create/update/retrieve/delete operations to manipulate it. Java
Manual HTTP calls Illustrate manual HTTP operations to access VAB objects via HTTP REST interface Java
Dynamic property (Lambda) Illustrate dynamic properties (Lambda expression) in VAB objects. Java
Dynamic property (Class) Illustrate the dynamic properties (Class) in VAB objects.

Java

AAS Submodel providers

Eclipse BaSyx provides pre-created AAS Submodel providers. These servlets connect existing data sources, such as textual configuration files and SQL data bases into Industrie 4.0 environments as AAS Submodels. BaSyx Submodel providers are configured with a configuration API and do not require programming knowledge to integrate data sources into Industrie 4.0 environments as AAS Submodels.


AAS Submodels (Dynamic)

Asset Administration Shell Submodels may contain dynamic properties and operations. Dynamic properties are properties whose values are generated dynamically at runtime. This may happen for example periodically, or whenever a specific information is requested. Dynamic operations are operations that may be updated at runtime. The following code snippets illustrate dynamic Submodel properties and operations.

Snippet Description Source
Dynamic property (Lambda) Illustrates the creation and usage of a lambda property (i.e. a property retrieving its value from a backend at runtime) Java


URN

Eclipse BaSyx advocates the use of URNs as unique identifiers for AAS. Code snippets illustrate the creation and use of URNs.

Snippet Description Source
Construct URNs Create URNs for AAS and globally idenfied Submodels Java

Deployment with Docker

The deployment of the different SDKs and components with docker is explained in its own page.

Monitoring Applications (AAS Dashboards)

The integration with third-party applications & tools enable the possibility to monitor Asset Administration Shell and visualize its data through Dashboards. The integration and its use is explained in here [page].

Back to the top