Skip to content

Commit

Permalink
Updated architecture
Browse files Browse the repository at this point in the history
  • Loading branch information
juliarobles committed Apr 15, 2024
1 parent 7cc262a commit 4724912
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions docs/docs/overview/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The following image illustrates the current architecture of OpenTwins, in which
### Essential functionality

The elements highlighted in **blue** form the heart of OpenTwins, as they provide the **essential functionalities** of a digital twin development platform: the definition of digital twins, the connection to IoT devices, the storage of information and the user-friendly visualisation of data. The tools used in this case include:
- [Eclipse Ditto](https://www.eclipse.org/ditto/). This is **the core component of OpenTwins**, an open-source framework for digital twins developed by the [Eclipse Foundation](https://www.eclipse.org/). Eclipse Ditto provides an asbstract entity ["Thing"](https://eclipse.dev/ditto/basic-thing.html), which allows describing digital twins through JSON schemas that include both static and dynamic data of the entity. The framework stores the current state of the "Thing" entity and facilitates its [connection](https://eclipse.dev/ditto/basic-connections.html) to input and output data sources through various IoT protocols. In a typical scenario, the Thing entity will update its information via a source connection, generating events that are sent to the indicated target connections. In addition, the tool provides an [API](https://eclipse.dev/ditto/http-api-doc.html) that allows querying the current state of the entity and managing its schema and connections.
- [Eclipse Ditto](https://www.eclipse.org/ditto/). This is **the core component of OpenTwins**, an open-source framework for digital twins developed by the [Eclipse Foundation](https://www.eclipse.org/). Eclipse Ditto provides an abstract entity ["Thing"](https://eclipse.dev/ditto/basic-thing.html), which allows describing digital twins through JSON schemas that include both static and dynamic data of the entity. The framework stores the current state of the "Thing" entity and facilitates its [connection](https://eclipse.dev/ditto/basic-connections.html) to input and output data sources through various IoT protocols. In a typical scenario, the Thing entity will update its information via a source connection, generating events that are sent to the indicated target connections. In addition, the tool provides an [API](https://eclipse.dev/ditto/http-api-doc.html) that allows querying the current state of the entity and managing its schema and connections.
- [Eclipse Hono](https://www.eclipse.org/hono/). This component facilitates the **reception of data through various IoT protocols** and centralizes it into a single endpoint, either [AMQP 1.0](https://www.amqp.org/) or [Kafka](https://kafka.apache.org/). This output connects directly to Eclipse Ditto, eliminating the need for users to manually connect to an external broker to extract data. This allows the platform to receive data through the most common IoT protocols, giving devices the flexibility to connect to the most appropriate protocol for their particular case.

:::warning
Expand All @@ -41,9 +41,9 @@ The elements highlighted in **blue** form the heart of OpenTwins, as they provid

The [composition of digital twins](./concepts.md#digital-twins-composition) represents one of the main contributions of this platform, distinguishing it from other similar solutions. In addition, OpenTwins provides the ability to define and compose ["types" of digital twins](./concepts.md#digital-twin-type), making development simpler. The services marked in **green** in the architecture are responsible for integrating these functionalities.

- [Extended API for Eclipse Ditto](https://github.com/ertis-research/extended-api-for-eclipse-ditto/). The Thing entity provided by Eclipse Ditto must follow a specific JSON schema, although it offers great flexibility within it. Our goal is to simplify type definition and entity composition by taking advantage of the flexibility of this schema. This "extended API" acts as a layer on top of the Eclipse Ditto API, distinguishing between the management of twins and types, and applying all the necessary constraints and checks to ensure the composition of these entities according to the constraints imposed by each (types form graphs, while twins form trees).
- [Extended API for Eclipse Ditto](https://github.com/ertis-research/extended-api-for-eclipse-ditto/). The Thing entity provided by Eclipse Ditto must follow a specific JSON schema, although it offers great flexibility within it. Our goal is to simplify type definition and entity composition by taking advantage of the flexibility of this schema. This "extended API" acts as a **layer on top of the Eclipse Ditto API**, distinguishing between the management of twins and types, and applying all the necessary constraints and checks to ensure the composition of these entities according to the constraints imposed by each (types form graphs, while twins form trees).

- [OpenTwins app plugin for Grafana](https://github.com/ertis-research/opentwins-in-grafana/). To have a pleasant and usable platform for as many users as possible, it is important to have a simple interface capable of performing the functionalities available. Therefore, an app plugin is included for Grafana that uses the extended API to query and manage twins, types and their composition in a user-friendly way. Moreover, this approach keeps the entire platform front-end within a single tool, making it easy to use and accessible.
- [OpenTwins app plugin for Grafana](https://github.com/ertis-research/opentwins-in-grafana/). To have a pleasant and usable platform for as many users as possible, it is important to have a simple **interface** capable of performing the functionalities available. Therefore, an app plugin is included for Grafana that uses the extended API to query and manage twins, types and their composition in a user-friendly way. Moreover, this approach keeps the entire platform front-end within a single tool, making it easy to use and accessible.

### Data prediction with machine learning

Expand All @@ -66,13 +66,13 @@ However, it could be replaced by any other graphics engine that compiles in WebG

Although it may seem a secondary aspect, the representation of the digital twin makes a major difference in its utility and adoption. An intuitive and attractive visual interface for users will facilitate the understanding and accessibility of the data received, which simplifies the optimization of the actual system. 3D representations stand out as one of the most effective options in this sense, which motivates most private digital twin platforms to offer support for them. For this reason, OpenTwins allows adding an interactive 3D representation of the digital twin that reacts dynamically to data received from any source (real, predicted or simulated). The components highlighted in **red** are the ones that enable this functionality.

- [Unity](https://unity.com/) This powerful graphics engine, versatile in both 3D and 2D development, is widely used in the creation of video games, simulations and engineering. It is recognized as one of the most popular, supported by a large and active community. Although it is not open source software, it can be used [free of charge for personal or low-profit projects](https://unity.com/es/products/unity-personal?currency=EUR). The technology of this engine allows to assign behaviors to 3D objects by means of scripts, which facilitates interaction both with the user and with other elements of the environment.
- [Unity](https://unity.com/) This powerful **graphics engine**, versatile in both 3D and 2D development, is widely used in the creation of video games, simulations and engineering. It is recognized as one of the most popular, supported by a large and active community. Although it is not open source software, it can be used [free of charge for personal or low-profit projects](https://unity.com/es/products/unity-personal?currency=EUR). The technology of this engine allows to assign behaviors to 3D objects by means of scripts, which facilitates interaction both with the user and with other elements of the environment.

:::info
Unity offers a wide range of [formats for importing 3D models](https://docs.unity3d.com/2023.2/Documentation/Manual/3D-formats.html), but we emphasize its integration with [Blender](https://www.blender.org/), an open source 3D creation suite that is equally popular and supported by an active community.
:::

On the other hand, Unity provides the possibility to compile projects in the Unity [WebGL](https://get.webgl.org/) format, perfect for web rendering. This option is the choice of OpenTwins, as it allows easy integration with existing web technologies, ensuring accessibility and distribution without the need for additional installations.
On the other hand, Unity provides the possibility to compile projects in the **Unity [WebGL](https://get.webgl.org/)** format, perfect for web rendering. This option is the choice of OpenTwins, as it allows easy integration with existing web technologies, ensuring accessibility and distribution without the need for additional installations.

- [Unity panel plugin for Grafana](https://github.com/ertis-research/unity-plugin-for-grafana). Since Grafana serves as the front-end of OpenTwins, it is convenient that the 3D representations are embedded directly into this tool, providing a unified management and visualization of the digital twin. To achieve this, a plugin capable of rendering WebGL compilations within a Grafana panel has been developed. This plugin is able to send the digital twin data from Grafana to the compilation, allowing it to influence the rendering in real time. In addition, this plugin enables direct user interaction with the 3D model, allowing actions on 3D elements to affect other panels of the dashboard. For example, by clicking on a 3D element, another Grafana panel can automatically display data related to it.
- [Unity panel plugin for Grafana](https://github.com/ertis-research/unity-plugin-for-grafana). Since Grafana serves as the front-end of OpenTwins, it is convenient that the 3D representations are embedded directly into this tool, providing a unified management and visualization of the digital twin. To achieve this, a plugin capable of **rendering WebGL compilations within a Grafana panel** has been developed. This plugin is able to send the digital twin data from Grafana to the compilation, allowing it to influence the rendering in real time. In addition, this plugin enables direct user interaction with the 3D model, allowing actions on 3D elements to affect other panels of the dashboard. For example, by clicking on a 3D element, another Grafana panel can automatically display data related to it.

0 comments on commit 4724912

Please sign in to comment.