Skip to content

Commit

Permalink
Merge pull request #105 from tributech-solutions/feature/tributech_V4…
Browse files Browse the repository at this point in the history
…_rewrite

Feature/tributech v4 rewrite
  • Loading branch information
LukasSchwaiger authored Aug 9, 2024
2 parents 5cbd91d + cd26cf2 commit 4f580b5
Show file tree
Hide file tree
Showing 173 changed files with 5,756 additions and 5,469 deletions.
1 change: 1 addition & 0 deletions docs/introduction.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
slug: /
sidebar_position: 1
---
# Introduction
Expand Down
6 changes: 0 additions & 6 deletions docs/oem_module/additional_resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,8 @@ Technical resources and documentation references:

- [OEM-Module IoT Starter Kit Example on Github](https://github.com/tributech-solutions/tributech-oem-module-iot-kit-examples)

<!--
- [Consume data via stream explorer](../consume_data/streamexplorer.md)
- [Consume data via APIs](../consume_data/api.md)
- [Verify collected data](../verify_data/overview.md)
Blog posts about the OEM module, technologies and core concepts:

- [OEM Module](https://www.tributech.io/blog/oem-module)
- [Connectivity](https://www.tributech.io/blog/LTE-M-and-NB-IoT-connectivity)
- [Data Notary](https://www.tributech.io/blog/data-notary)
-->
43 changes: 31 additions & 12 deletions docs/tributech_agent/agent_integration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,48 @@ We will show how to gain access to the Tributech Docker Registry and startup an
## Deployments

First we need to setup an environment for the execution of the Tributech Software components. We will use
[Docker Compose](https://docs.docker.com/compose/) to run a Tributech Agent and Tributech Simulated Source in the Docker Containers. If you want to use any other container runtime (e.g. containerd) please talk to your contact person at Tributech or send an email to our [**Customer Advisory Team**](https://www.tributech.io/about-us/).
[Docker Compose](https://docs.docker.com/compose/) to run a Tributech Agent and Tributech Simulated Source in the Docker Containers. If you want to use any other container runtime (e.g. containerd) please create a support ticket or talk to your contact person at Tributech.

### Requirements

The environment must meet the following hardware and software requirements:

#### Hardware Requirements
The following table shows the recommended minimum hardware requirements for the overall system.

| Type | Minimum Requirement | Recommend Requirement |
| :--- | :----------------------- | :-------------------- |
| CPU | 1 Core (x86-64 / ARM32 ) | 2 Cores |
| RAM | 1 GB Ram | 2 GB Ram |
| Type | Minimum Requirement | Additional Information |
| :--- | :------------------------------- | :--------------------- |
| CPU | 1 Core (x86-64 / ARM 32/64) or more | The minimum requirements for small and medium workloads. |
| RAM | 1 GB | The minimum requirements for small and medium workloads. |
| Storage | 221 MB | A typical setup requires around 500MB consisting of the Tributech Agent = 221 MB, the Tributech Source = 227 MB and the Mosquitto broker = 11,6 MB. |

The following table shows an example of a performance test with a typical IoT gateway or low-end servers. The results include the consumed CPU and RAM resources of the Tributech Agent, in addition you also need to consider the resource consumption of your selected source and your own services.

|Value per second|CPU load(1 core 2.2GHz)|RAM|
| :------------- | :-------------------- |:- |
| 1 | 0,54% | 103,1MB|
| 10 | 2,45% | 112,2MB|
| 100 | 13,55% | 129MB|

If you have any questions regarding infrastructure requirements, please talk to your contact person at Tributech or create a support ticket.

The Tributech Agent itself does not actually consume that much RAM, these are the requirements for the whole system. Keep in mind that these requirements strongly depend on the overall setup and the actual workload of the Tributech Agent.
The stated Hardware Requirements are recommendations for small and medium workloads (based on volume of data processed).
If you have any questions regarding infrastructure requirements, please talk to your contact person at Tributech or send an email to our [**Customer Advisory Team**](mailto:customer-advisory@tributech.io).

#### Software Requirements

| Type | Required |Preferred |
| :------ | :----------- | :----------------------------- |
| OS | Any current Linux Distribution | Ubuntu 18.04 LTS or later |
| Runtime | Docker Engine (≥20) + Docker-Compose (≥1.26) | Docker Engine + Docker-Compose |
| Type | Requirement | Additional Information |
| :------ | :----------- | :--------------------- |
| OS | Any current Linux Distribution | We recommend to select a managed solution from an IoT device or infrastructure provider which also takes care of operating system updates for example a vendor like [Welotec](https://www.welotec.com/). |
| Runtime | Any current Docker environment | We recommend a managed solution for docker container orchestration e.g.: [Azure IoT Edge Runtime](https://azure.microsoft.com/de-de/products/iot-edge) |
| File System | any suppoerted docker file system | The user/instance which runs the docker containers must have read and write permission for the volume where the docker containers are situated. |

#### Network requirements

| Type | Requirement | Additional Information |
| :------ | :----------- | :--------------------- |
| Communication protocol | MQTTS | Communication protocol used between Tributech Agent and Node. MQTTS is the secure version of the MQTT protocol using TLS. |
| Port | 1883 | Communication port used between Tributech Agent and Node. |
| Endpoint URL | <name\>.tributech-node.com | MQTT endpoint on server (platform) side. |
| Firewall rules | allow outbound traffic for endpoint URL for port 1883 | Tributech Agent needs to be allowed to communicate with the platform, typically required for restricted enterprise networks. |

### Docker-Compose Setup

Expand Down
2 changes: 1 addition & 1 deletion docs/tributech_agent/examples/agent-source/ads/env
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
AGENT_TAG=3.6.0
AGENT_TAG=3.6.1
AGENT_ID=00000000-0000-0000-0000-000000000007
SOURCE_TAG=3.6.0
2 changes: 1 addition & 1 deletion docs/tributech_agent/examples/agent-source/mqtt/env
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
AGENT_TAG=3.6.0
AGENT_TAG=3.6.1
AGENT_ID=00000000-0000-0000-0000-000000000007
SOURCE_TAG=3.6.0
2 changes: 1 addition & 1 deletion docs/tributech_agent/examples/agent-source/opcua/env
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
AGENT_TAG=3.6.0
AGENT_TAG=3.6.1
AGENT_ID=00000000-0000-0000-0000-000000000007
SOURCE_TAG=3.6.0
2 changes: 1 addition & 1 deletion docs/tributech_agent/examples/agent-source/rest/env
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
AGENT_TAG=3.6.0
AGENT_TAG=3.6.1
AGENT_ID=00000000-0000-0000-0000-000000000007
SOURCE_TAG=3.6.0
2 changes: 1 addition & 1 deletion docs/tributech_agent/examples/agent-source/simulated/env
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
AGENT_TAG=3.6.0
AGENT_TAG=3.6.1
AGENT_ID=00000000-0000-0000-0000-000000000007
SOURCE_TAG=3.6.0
2 changes: 1 addition & 1 deletion docs/tributech_agent/examples/agent/env
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
AGENT_TAG=3.6.0
AGENT_TAG=3.6.1
AGENT_ID=<Unique-Agent-GUID>
SOURCE_TAG=3.6.0
6 changes: 5 additions & 1 deletion docs/tributech_agent/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,8 @@ The supported Tributech Sources give the user a wide variety of endpoints with w
| OPC-UA | The [**OPC-UA Source Guide**](./sources/opcua_source.mdx) integrates data provided by an OPC-UA conform interface. |
| Beckhoff ADS | The [**ADS Source Guide**](./sources/ads_source.mdx) integrates data provided by an Beckhoff ADS PLC Server. |
| Simulated Sensor | The [**Simulated Source Guide**](./sources/simulated_source.mdx) integrates data provided by test sources generating random data. |
| REST | The [**REST Source Guide**](./sources/rest_source.mdx) integrates data provided via [HTTP APIs](https://swagger.io/specification/). |
| REST | The [**REST Source Guide**](./sources/rest_source.mdx) integrates data provided via [HTTP APIs](https://swagger.io/specification/). |

## Agent Deployment

Our Agent is a Docker service with a broker and a source. As mentioned the Agent is a docker service and can be combined with any Docker orchestration service like [Docker Compose](https://docs.docker.com/compose/) or IoT device management platforms like [Azure IoT Edge Runtime](https://learn.microsoft.com/en-us/azure/iot-edge/iot-edge-runtime?view=iotedge-1.4). The general Integration of our Agent is described in the section [Agent Integration](agent_integration.mdx/).
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<mxfile host="Electron" modified="2024-07-29T13:40:09.471Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.6.4 Chrome/124.0.6367.207 Electron/30.0.6 Safari/537.36" etag="AcEirdPV1f_zAxnXsWpi" version="24.6.4" type="device">
<diagram name="Page-1" id="STCRA5AkPAw-dsx0DW-E">
<mxGraphModel dx="1275" dy="802" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="yy2VxiQyi96_yXLKYSKg-18" value="&lt;b&gt;Public Network&lt;/b&gt;" style="whiteSpace=wrap;html=1;aspect=fixed;verticalAlign=top;fillColor=none;glass=0;fillStyle=zigzag-line;strokeColor=#6c8ebf;strokeWidth=5;" vertex="1" parent="1">
<mxGeometry x="464" y="550" width="324" height="324" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-17" value="&lt;b&gt;Internal Network&lt;/b&gt;" style="whiteSpace=wrap;html=1;aspect=fixed;verticalAlign=top;fillColor=none;glass=0;fillStyle=zigzag-line;strokeColor=#82b366;strokeWidth=5;" vertex="1" parent="1">
<mxGeometry x="69" y="553" width="324" height="324" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-2" value="Tributech Platform" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">
<mxGeometry x="382.20000000000005" y="180" width="252.8" height="250" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-4" value="Tributech UI" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/app_services/App_Service_Domains.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="671" y="218.54" width="65" height="52" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-6" value="Storage" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/iot/Time_Series_Data_Sets.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="493.4" y="341" width="51.2" height="68" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-11" value="Tributech Node" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/containers/Kubernetes_Services.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="485" y="265" width="68" height="60" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-16" value="Custom Application" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/iot/IoT_Central_Applications.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="676" y="334.54" width="60" height="69" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-17" value="Edge Device" style="whiteSpace=wrap;html=1;verticalAlign=bottom;labelPosition=center;verticalLabelPosition=top;align=center;" parent="1" vertex="1">
<mxGeometry x="215" y="240.00000000000006" width="130" height="206.54" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-3" value="Tributech Agent" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/mscae/Docker.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="256" y="285.53999999999996" width="50" height="41" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-10" value="Tributech Source" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/mscae/Docker.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="255.9999999999999" y="388.99999999999994" width="50" height="41" as="geometry" />
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-19" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" source="JV24va2_vtx07EKMmSr4-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="591" y="510" as="sourcePoint" />
<mxPoint x="671" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-20" value="" style="endArrow=classic;html=1;rounded=0;exitX=1.015;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="JV24va2_vtx07EKMmSr4-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="495" y="297" as="sourcePoint" />
<mxPoint x="671" y="350" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-22" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.96;entryY=0.255;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="JV24va2_vtx07EKMmSr4-11" target="JV24va2_vtx07EKMmSr4-3" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="151" y="270" as="sourcePoint" />
<mxPoint x="-9" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-24" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=-0.049;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="JV24va2_vtx07EKMmSr4-10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="161" y="520" as="sourcePoint" />
<mxPoint x="281" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JV24va2_vtx07EKMmSr4-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.955;exitY=0.463;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="150.97399999999993" y="410.0239999999999" as="sourcePoint" />
<mxPoint x="251" y="410" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="XRpzpW0mkASHfJie3qSX-1" value="Customer Data" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/iot/Industrial_IoT.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" parent="1" vertex="1">
<mxGeometry x="90" y="382" width="62.8" height="68" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-2" value="Tributech UI" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/app_services/App_Service_Domains.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="1">
<mxGeometry x="681" y="602.54" width="65" height="52" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-4" value="Tributech Node" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/containers/Kubernetes_Services.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="1">
<mxGeometry x="495" y="649" width="68" height="60" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-5" value="Custom Application" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/iot/IoT_Central_Applications.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="1">
<mxGeometry x="686" y="718.54" width="60" height="69" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-6" value="Edge Device" style="whiteSpace=wrap;html=1;verticalAlign=bottom;labelPosition=center;verticalLabelPosition=top;align=center;" vertex="1" parent="1">
<mxGeometry x="225" y="624" width="130" height="206.54" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-7" value="Tributech Agent" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/mscae/Docker.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="1">
<mxGeometry x="266" y="669.54" width="50" height="41" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-8" value="Tributech Source" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/mscae/Docker.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="1">
<mxGeometry x="265.9999999999999" y="773" width="50" height="41" as="geometry" />
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-9" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="yy2VxiQyi96_yXLKYSKg-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="601" y="894" as="sourcePoint" />
<mxPoint x="681" y="654" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-10" value="" style="endArrow=classic;html=1;rounded=0;exitX=1.015;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="yy2VxiQyi96_yXLKYSKg-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="505" y="681" as="sourcePoint" />
<mxPoint x="681" y="734" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-11" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="484" y="680" as="sourcePoint" />
<mxPoint x="334" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-12" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=-0.049;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="yy2VxiQyi96_yXLKYSKg-8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="171" y="904" as="sourcePoint" />
<mxPoint x="291" y="724" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-13" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.955;exitY=0.463;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="160.97399999999993" y="794.0239999999999" as="sourcePoint" />
<mxPoint x="261" y="794" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="yy2VxiQyi96_yXLKYSKg-14" value="Customer Data" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;image=img/lib/azure2/iot/Industrial_IoT.svg;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="1">
<mxGeometry x="100" y="766" width="62.8" height="68" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading

0 comments on commit 4f580b5

Please sign in to comment.