From e7a8dd55dfb63b884aed694e87229c5ea21c1454 Mon Sep 17 00:00:00 2001 From: Julius Balzer <julius.balzer@stud.tu-darmstadt.de> Date: Tue, 25 Mar 2025 18:14:18 +0100 Subject: [PATCH 01/16] Update README description of project --- README.rst | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index f4de9f7..036a878 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,70 @@ ETA Connect ====================== -TODO ----------------------- +It originated from the `eta-utility package <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility>`_ and was split off to provide a more focused and modular package. + +Current available Connection protocols: + +Machine and Server Connections: + +- Emonio +- Modbus TCP +- OPC UA + +Online API Connections: + +- Cumulocity +- Entso-e +- Eneffco +- ForecastSolar +- Wetterdienst + +If you want to record data from machines and servers, you can use the `DataRecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. + +Full Documentation can be found on the +`Documentation Page <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_. + + +.. warning:: + This is beta software. APIs and functionality might change without prior notice. Please fix the version you + are using in your requirements to ensure your software will not be broken by changes in *eta_connect*. + +The package *eta_connect* consists of two main modules and some additional functionality: + +- The *connectors* module provides a standardized way to connect to machines and devices in a + factory or other factory systems (such as energy management systems). The **connectors** can also + handle subscriptions, for example to regularly store values in a database. +- The *servers* module can be used to easily instantiate servers, for example to publish optimization + results. +- Other functionality includes some general utilities which are available on the top level of the + package. + + + +Citing this project +-------------------- + +Please cite this project using our publication: + +.. code-block:: + + Grosch, B., Ranzau, H., Dietrich, B., Kohne, T., Fuhrländer-Völker, D., Sossenheimer, J., Lindner, M., Weigold, M. + A framework for researching energy optimization of factory operations. + Energy Inform 5 (Suppl 1), 29 (2022). https://doi.org/10.1186/s42162-022-00207-6 + +We would like to thank the many contributors who developed functionality for the package, helped with +documentation or provided insights which helped to create the framework architecture. + +- *Niklas Panten* for the first implementation of the rolling horizon optimization now available in + *eta_x*, +- *Nina Strobel* for the first implementation of the connectors, +- *Thomas Weber* for contributions to the rolling horizon optimization with MPC algorithms, +- *Guilherme Fernandes*, *Tobias Koch*, *Tobias Lademann*, *Saahil Nayyer*, *Magdalena Patyna*, *Jerome Stock*, +- and all others who made small and large contributions. + +Contributions +-------------------- + +If you would like to contribute, please create an issue in the repository to discuss you suggestions. +Once the general idea has been agreed upon, you can create a merge request from the issue and +implement your changes there. -- GitLab From 23379ae5f4cff929803a1c265b0320e0f9abea96 Mon Sep 17 00:00:00 2001 From: Julius Balzer <julius.balzer@stud.tu-darmstadt.de> Date: Tue, 25 Mar 2025 18:14:37 +0100 Subject: [PATCH 02/16] Add draft versionn of AUTHORS file --- AUTHORS | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 AUTHORS diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..dd464dc --- /dev/null +++ b/AUTHORS @@ -0,0 +1,35 @@ + Project: eta-connect +===================== + +This repository is part of the original eta_utility framework by Benedikt Grosch, which was split into eta_connect and eta_optimize. +For a full list of foundational contributors, please refer to eta_utility: https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility + +Active Contributors +------------------- +These individuals have contributed to this repository (eta_connect) through development, design, testing, or documentation. + +- *Andreas Clement* +- *Jerome Stock* +- *Julius Balzer* +- *Mikael Hailu* +- [Others ] + +Legacy Contributions +-------------------- +The original eta_utility framework laid the foundation for this repository. +Main contributors to the connections include: + +- *Benedikt Grosch* — Author of eta-utility +- *Nina Strobel* — Initial implementation of the connectors +- *Guilherme Fernandes*, *Tobias Koch*, *Tobias Lademann*, *Saahil Nayyer*, *Magdalena Patyna*, *Jerome Stock*, + + +Citation +-------- +If referencing the foundational work, please cite: + +.. code-block:: + + Grosch, B., Ranzau, H., Dietrich, B., Kohne, T., Fuhrländer-Völker, D., Sossenheimer, J., Lindner, M., Weigold, M. + A framework for researching energy optimization of factory operations. + Energy Inform 5 (Suppl 1), 29 (2022). https://doi.org/10.1186/s42162-022-00207-6 -- GitLab From 6b40100937a7072db9279493e820f23d9c7ed402 Mon Sep 17 00:00:00 2001 From: Julius Balzer <julius.balzer@stud.tu-darmstadt.de> Date: Tue, 25 Mar 2025 18:14:54 +0100 Subject: [PATCH 03/16] Add maintainers to pyproject.toml --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 2be1ae3..fedc075 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,11 @@ requires-python = ">=3.9.2, <3.12" authors = [ {name = "Technical University of Darmstadt, Institute for Production Management, Technology and Machine Tools (PTW)", email="info@ptw.tu-darmstadt.de"} ] +maintainers = [ + {name = "Andreas Clement", email = "A.Clement@PTW.TU-Darmstadt.de"}, + {name = "Jerome Stock", email = "J.Stock@PTW.TU-Darmstadt.de"}, + {name= "Julius Balzer", email = "julius.balzer@stud.tu-darmstadt.de"} +] keywords = [ "connectors","servers","simulators", "eta-fabrik" ] -- GitLab From e6f0045cb16bfdca886935e1f8ce3a424534b5b6 Mon Sep 17 00:00:00 2001 From: Julius Balzer <julius.balzer@stud.tu-darmstadt.de> Date: Tue, 25 Mar 2025 18:15:42 +0100 Subject: [PATCH 04/16] Add back first paragraph in README --- README.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.rst b/README.rst index 036a878..ffb6dd0 100644 --- a/README.rst +++ b/README.rst @@ -1,6 +1,9 @@ ETA Connect ====================== +ETA Connect is a Python package designed to manage connections to various endpoints, including machines, devices in a factory, and other web API services. +The package provides standardized connections for multiple communication protocols, such as OPC UA and Modbus TCP. + It originated from the `eta-utility package <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility>`_ and was split off to provide a more focused and modular package. Current available Connection protocols: -- GitLab From 7d26510b7c00256f215d5b4413f87405371eb091 Mon Sep 17 00:00:00 2001 From: Julius Balzer <julius.balzer@stud.tu-darmstadt.de> Date: Tue, 25 Mar 2025 17:19:16 +0000 Subject: [PATCH 05/16] Reformat README --- README.rst | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/README.rst b/README.rst index ffb6dd0..3a92a20 100644 --- a/README.rst +++ b/README.rst @@ -6,21 +6,6 @@ The package provides standardized connections for multiple communication protoco It originated from the `eta-utility package <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility>`_ and was split off to provide a more focused and modular package. -Current available Connection protocols: - -Machine and Server Connections: - -- Emonio -- Modbus TCP -- OPC UA - -Online API Connections: - -- Cumulocity -- Entso-e -- Eneffco -- ForecastSolar -- Wetterdienst If you want to record data from machines and servers, you can use the `DataRecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. @@ -43,8 +28,24 @@ The package *eta_connect* consists of two main modules and some additional funct package. +Current Available Connection Protocols +------------------------------------------- + +Machine and Server Connections: + +- Emonio +- Modbus TCP +- OPC UA + +Online API Connections: + +- Cumulocity +- Entso-e +- Eneffco +- ForecastSolar +- Wetterdienst -Citing this project +Citing this Project -------------------- Please cite this project using our publication: -- GitLab From f35084bea49f24f7fdd9156cfef33af771a83b72 Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Thu, 27 Mar 2025 14:44:34 +0100 Subject: [PATCH 06/16] Test readme online --- AUTHORS => AUTHORS.rst | 5 +- README.rst | 136 +++++++++++++++++------------------ docs/_static/eta_connect.svg | 3 + 3 files changed, 73 insertions(+), 71 deletions(-) rename AUTHORS => AUTHORS.rst (79%) create mode 100644 docs/_static/eta_connect.svg diff --git a/AUTHORS b/AUTHORS.rst similarity index 79% rename from AUTHORS rename to AUTHORS.rst index dd464dc..0037a91 100644 --- a/AUTHORS +++ b/AUTHORS.rst @@ -1,7 +1,7 @@ Project: eta-connect ===================== -This repository is part of the original eta_utility framework by Benedikt Grosch, which was split into eta_connect and eta_optimize. +This project was part of the `eta-utility <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility>` framework by Benedikt Grosch, which was split into eta-connect and eta-optimize to provide a more focused and modular package. For a full list of foundational contributors, please refer to eta_utility: https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility Active Contributors @@ -21,8 +21,7 @@ Main contributors to the connections include: - *Benedikt Grosch* — Author of eta-utility - *Nina Strobel* — Initial implementation of the connectors -- *Guilherme Fernandes*, *Tobias Koch*, *Tobias Lademann*, *Saahil Nayyer*, *Magdalena Patyna*, *Jerome Stock*, - +- *Guilherme Fernandes*, *Tobias Koch*, *Tobias Lademann*, *Saahil Nayyer*, *Magdalena Patyna*, *Jerome Stock* Citation -------- diff --git a/README.rst b/README.rst index 3a92a20..b0031b9 100644 --- a/README.rst +++ b/README.rst @@ -1,74 +1,74 @@ ETA Connect -====================== - -ETA Connect is a Python package designed to manage connections to various endpoints, including machines, devices in a factory, and other web API services. -The package provides standardized connections for multiple communication protocols, such as OPC UA and Modbus TCP. - -It originated from the `eta-utility package <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility>`_ and was split off to provide a more focused and modular package. - - -If you want to record data from machines and servers, you can use the `DataRecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. - -Full Documentation can be found on the -`Documentation Page <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_. - +############# .. warning:: - This is beta software. APIs and functionality might change without prior notice. Please fix the version you - are using in your requirements to ensure your software will not be broken by changes in *eta_connect*. - -The package *eta_connect* consists of two main modules and some additional functionality: - -- The *connectors* module provides a standardized way to connect to machines and devices in a - factory or other factory systems (such as energy management systems). The **connectors** can also - handle subscriptions, for example to regularly store values in a database. -- The *servers* module can be used to easily instantiate servers, for example to publish optimization - results. -- Other functionality includes some general utilities which are available on the top level of the - package. - - -Current Available Connection Protocols -------------------------------------------- - -Machine and Server Connections: - -- Emonio -- Modbus TCP -- OPC UA - -Online API Connections: - -- Cumulocity -- Entso-e -- Eneffco -- ForecastSolar -- Wetterdienst - -Citing this Project --------------------- - -Please cite this project using our publication: - -.. code-block:: - + This is beta software. APIs and functionality may change significantly in major releases, and old major releases do not receive bug fixes. + +*ETA Connect* is a Python package designed to manage and facilitate inbound as well as outbound connections to various endpoints, including PLC controllers, field devices, and API services. The package aims to provide standardized connectivity through one unified notation across multiple communication protocols, currently supporting OPC UA, Modbus TCP, and REST. + +If you want to record timeseries continuously, you can also use the `DataRecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. + +**Full Documentation can be found here** +`Documentation Page <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_ + +Currently available Connection Protocols +***************************************** + +.. image:: _static/eta_connect.svg + :alt: ETA Connect + +There are two interfaces for connections: ``FieldConnectionType`` and ``SeriesConnectionType``. +While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle the current value of the endpoint, +``SeriesConnectionType`` implements ``read_series()``, yielding historic data without an ability to write to endpoints. +``Connection``s can implement both interfaces. + +.. list-table:: Connection Types + :widths: 30 20 20 + :header-rows: 1 + + * - Connection + - FieldConnectionType + - SeriesConnectionType + * - Emonio (``Emonio``) + - ✓ + - + * - Modbus TCP (``Modbus``) + - ✓ + - + * - OPC UA (``Opcua``) + - ✓ + - + * - ENTSO-E (``Entsoe``) + - + - ✓ + * - ForecastSolar (``Forecastsolar``) + - + - ✓ + * - Wetterdienst (``Wetterdienst``) + - + - ✓ + * - EnEffco (``Eneffco``) + - ✓ + - ✓ + * - etaONE (``Etaone``) + - ✓ + - ✓ + + +Contributing +************* + +If you would like to contribute, please create an issue in the repository to discuss your suggestions. +Once the general idea has been agreed upon, you can create a merge request from the issue and implement your changes there. + +Citing this Project / Authors +****************************** + +See `AUTHORS <AUTHORS.rst>` for a full list of contributors. + +Until the publishing of a separate paper, please cite: + + .. code-block:: Grosch, B., Ranzau, H., Dietrich, B., Kohne, T., Fuhrländer-Völker, D., Sossenheimer, J., Lindner, M., Weigold, M. A framework for researching energy optimization of factory operations. Energy Inform 5 (Suppl 1), 29 (2022). https://doi.org/10.1186/s42162-022-00207-6 - -We would like to thank the many contributors who developed functionality for the package, helped with -documentation or provided insights which helped to create the framework architecture. - -- *Niklas Panten* for the first implementation of the rolling horizon optimization now available in - *eta_x*, -- *Nina Strobel* for the first implementation of the connectors, -- *Thomas Weber* for contributions to the rolling horizon optimization with MPC algorithms, -- *Guilherme Fernandes*, *Tobias Koch*, *Tobias Lademann*, *Saahil Nayyer*, *Magdalena Patyna*, *Jerome Stock*, -- and all others who made small and large contributions. - -Contributions --------------------- - -If you would like to contribute, please create an issue in the repository to discuss you suggestions. -Once the general idea has been agreed upon, you can create a merge request from the issue and -implement your changes there. diff --git a/docs/_static/eta_connect.svg b/docs/_static/eta_connect.svg new file mode 100644 index 0000000..0950e43 --- /dev/null +++ b/docs/_static/eta_connect.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="311px" height="302px" viewBox="-0.5 -0.5 311 302"><defs><style type="text/css">@import url(https://fonts.googleapis.com/css?family=Permanent+Marker);
</style></defs><g><path d="M 0 0 L 0 0 L 310 0 L 310 0" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 0 L 0 300 L 310 300 L 310 0" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="154.5" y="17.5">eta_connect</text></g><rect x="100" y="30" width="140" height="40" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><rect x="105" y="35" width="130" height="30" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 128px; height: 1px; padding-top: 62px; margin-left: 107px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">ConnectionManager</div></div></div></foreignObject><text x="107" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">ConnectionManager</text></switch></g><path d="M 40 80 L 40 50 L 93.63 50" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 98.88 50 L 91.88 53.5 L 93.63 50 L 91.88 46.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="10" y="80" width="290" height="210" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><rect x="15" y="85" width="280" height="200" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 278px; height: 1px; padding-top: 282px; margin-left: 17px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Connection</div></div></div></foreignObject><text x="17" y="282" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Connection</text></switch></g><rect x="158" y="160" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 174px; margin-left: 159px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">ModbusConnection</div></div></div></foreignObject><text x="223" y="177" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ModbusConnection</text></switch></g><rect x="20" y="125" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 139px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">WetterdienstConnection</div></div></div></foreignObject><text x="85" y="142" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">WetterdienstConnection</text></switch></g><rect x="20" y="160" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 174px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">OpcuaConnection</div></div></div></foreignObject><text x="85" y="177" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">OpcuaConnection</text></switch></g><rect x="20" y="90" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 104px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">RestConection</div></div></div></foreignObject><text x="85" y="107" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">RestConection</text></switch></g><rect x="20" y="230" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 244px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">EneffcoConnection</div></div></div></foreignObject><text x="85" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">EneffcoConnection</text></switch></g><rect x="158" y="230" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 244px; margin-left: 159px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">EtaoneConnection</div></div></div></foreignObject><text x="223" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">EtaoneConnection</text></switch></g><rect x="158" y="90" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 104px; margin-left: 159px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">EntsoeConection</div></div></div></foreignObject><text x="223" y="107" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">EntsoeConection</text></switch></g><rect x="158" y="125" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 139px; margin-left: 159px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">ForecastConection</div></div></div></foreignObject><text x="223" y="142" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ForecastConection</text></switch></g><rect x="158" y="195" width="130" height="27" rx="2.7" ry="2.7" fill="none" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 209px; margin-left: 159px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">EmonioConnection</div></div></div></foreignObject><text x="223" y="212" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">EmonioConnection</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> -- GitLab From 2a317e7d38b5f547cb77ad1f27a7deeaf9a99153 Mon Sep 17 00:00:00 2001 From: "A.Clement" <a.clement@ptw.tu-darmstadt.de> Date: Thu, 27 Mar 2025 13:47:30 +0000 Subject: [PATCH 07/16] Edit README.rst --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index b0031b9..9224df2 100644 --- a/README.rst +++ b/README.rst @@ -64,7 +64,7 @@ Once the general idea has been agreed upon, you can create a merge request from Citing this Project / Authors ****************************** -See `AUTHORS <AUTHORS.rst>` for a full list of contributors. +See `AUTHORS <AUTHORS.rst>`_ for a full list of contributors. Until the publishing of a separate paper, please cite: -- GitLab From 8ef2d52397fea9268dd2e19a72709e8c655b2c1e Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Thu, 27 Mar 2025 15:08:00 +0100 Subject: [PATCH 08/16] finalize readme --- README.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index b0031b9..36c499d 100644 --- a/README.rst +++ b/README.rst @@ -20,7 +20,7 @@ Currently available Connection Protocols There are two interfaces for connections: ``FieldConnectionType`` and ``SeriesConnectionType``. While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle the current value of the endpoint, ``SeriesConnectionType`` implements ``read_series()``, yielding historic data without an ability to write to endpoints. -``Connection``s can implement both interfaces. +``Connection`` s can implement both interfaces. .. list-table:: Connection Types :widths: 30 20 20 @@ -58,17 +58,20 @@ While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle t Contributing ************* +Please read the `development guide <docs/guide/development.rst>`_ before starting development on *eta_connect*: . + If you would like to contribute, please create an issue in the repository to discuss your suggestions. Once the general idea has been agreed upon, you can create a merge request from the issue and implement your changes there. Citing this Project / Authors ****************************** -See `AUTHORS <AUTHORS.rst>` for a full list of contributors. +See `AUTHORS <AUTHORS.rst>`_ for a full list of contributors. Until the publishing of a separate paper, please cite: .. code-block:: + Grosch, B., Ranzau, H., Dietrich, B., Kohne, T., Fuhrländer-Völker, D., Sossenheimer, J., Lindner, M., Weigold, M. A framework for researching energy optimization of factory operations. Energy Inform 5 (Suppl 1), 29 (2022). https://doi.org/10.1186/s42162-022-00207-6 -- GitLab From 9a0b30902bf96cdf6f62e15d668941587c3ab998 Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Thu, 27 Mar 2025 15:09:08 +0100 Subject: [PATCH 09/16] finalfinal --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 36c499d..7f01156 100644 --- a/README.rst +++ b/README.rst @@ -58,17 +58,17 @@ While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle t Contributing ************* -Please read the `development guide <docs/guide/development.rst>`_ before starting development on *eta_connect*: . - If you would like to contribute, please create an issue in the repository to discuss your suggestions. Once the general idea has been agreed upon, you can create a merge request from the issue and implement your changes there. +Please read the `development guide <docs/guide/development.rst>`_ before starting development on *eta_connect* + Citing this Project / Authors ****************************** See `AUTHORS <AUTHORS.rst>`_ for a full list of contributors. -Until the publishing of a separate paper, please cite: +Please cite this repository as: .. code-block:: -- GitLab From 9a317777d3acb4ce914600c677d965455acc9ba0 Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Thu, 27 Mar 2025 15:11:12 +0100 Subject: [PATCH 10/16] ... --- README.rst | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.rst b/README.rst index 7f01156..08ff98a 100644 --- a/README.rst +++ b/README.rst @@ -1,15 +1,17 @@ ETA Connect ############# -.. warning:: - This is beta software. APIs and functionality may change significantly in major releases, and old major releases do not receive bug fixes. - *ETA Connect* is a Python package designed to manage and facilitate inbound as well as outbound connections to various endpoints, including PLC controllers, field devices, and API services. The package aims to provide standardized connectivity through one unified notation across multiple communication protocols, currently supporting OPC UA, Modbus TCP, and REST. If you want to record timeseries continuously, you can also use the `DataRecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. -**Full Documentation can be found here** -`Documentation Page <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_ +Docs +======== +`Full Documentation can be found here <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_ + +.. warning:: + + This is beta software. APIs and functionality may change significantly in major releases, and old major releases do not receive bug fixes. Currently available Connection Protocols ***************************************** -- GitLab From 89c6c6b6a21de98e9a58f45a2c2d737cb9efb30e Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Thu, 27 Mar 2025 15:16:24 +0100 Subject: [PATCH 11/16] typos --- README.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.rst b/README.rst index 08ff98a..dc8519e 100644 --- a/README.rst +++ b/README.rst @@ -6,15 +6,15 @@ ETA Connect If you want to record timeseries continuously, you can also use the `DataRecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. Docs -======== -`Full Documentation can be found here <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_ +******* +`Full documentation can be found here <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_ .. warning:: This is beta software. APIs and functionality may change significantly in major releases, and old major releases do not receive bug fixes. Currently available Connection Protocols -***************************************** +========================================= .. image:: _static/eta_connect.svg :alt: ETA Connect @@ -58,7 +58,7 @@ While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle t Contributing -************* +============= If you would like to contribute, please create an issue in the repository to discuss your suggestions. Once the general idea has been agreed upon, you can create a merge request from the issue and implement your changes there. @@ -66,7 +66,7 @@ Once the general idea has been agreed upon, you can create a merge request from Please read the `development guide <docs/guide/development.rst>`_ before starting development on *eta_connect* Citing this Project / Authors -****************************** +================================ See `AUTHORS <AUTHORS.rst>`_ for a full list of contributors. -- GitLab From 5b05cc0f9c3145ba117d946a10fa4679a151808b Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Fri, 28 Mar 2025 13:05:27 +0100 Subject: [PATCH 12/16] fixed broken links --- AUTHORS.rst | 2 +- README.rst | 7 ++----- docs/authors.rst | 1 + 3 files changed, 4 insertions(+), 6 deletions(-) create mode 100644 docs/authors.rst diff --git a/AUTHORS.rst b/AUTHORS.rst index 0037a91..388c5ff 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -1,5 +1,5 @@ Project: eta-connect -===================== +######################## This project was part of the `eta-utility <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility>` framework by Benedikt Grosch, which was split into eta-connect and eta-optimize to provide a more focused and modular package. For a full list of foundational contributors, please refer to eta_utility: https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-utility diff --git a/README.rst b/README.rst index dc8519e..221e2f5 100644 --- a/README.rst +++ b/README.rst @@ -60,15 +60,12 @@ While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle t Contributing ============= -If you would like to contribute, please create an issue in the repository to discuss your suggestions. -Once the general idea has been agreed upon, you can create a merge request from the issue and implement your changes there. - -Please read the `development guide <docs/guide/development.rst>`_ before starting development on *eta_connect* +Please read the :doc:`development guide <guide/development>` before starting development on *eta_connect* Citing this Project / Authors ================================ -See `AUTHORS <AUTHORS.rst>`_ for a full list of contributors. +See :doc:`AUTHORS <authors>` for a full list of contributors. Please cite this repository as: diff --git a/docs/authors.rst b/docs/authors.rst new file mode 100644 index 0000000..e122f91 --- /dev/null +++ b/docs/authors.rst @@ -0,0 +1 @@ +.. include:: ../AUTHORS.rst -- GitLab From 00e409f7bb6c104015925855227680f227bae7de Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Tue, 1 Apr 2025 11:45:50 +0200 Subject: [PATCH 13/16] updated meta information --- pyproject.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fedc075..7165c0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,14 +14,14 @@ maintainers = [ {name= "Julius Balzer", email = "julius.balzer@stud.tu-darmstadt.de"} ] keywords = [ - "connectors","servers","simulators", "eta-fabrik" + "connectivity", "servers", "iot", "multi-protocol", "eta-fabrik" ] dynamic = ["classifiers", "dependencies"] [project.urls] homepage = "https://www.ptw.tu-darmstadt.de" repository = "https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect" -documentation = "https://eta-utility.readthedocs.io/" # TODO: Change to the correct URL +documentation = "https://eta-connect.readthedocs.io/" issues = "https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/-/issues" [tool.poetry] @@ -30,17 +30,17 @@ classifiers = [ "License :: OSI Approved :: BSD License", "Development Status :: 4 - Beta", "Intended Audience :: Developers", + "Intended Audience :: Education", "Intended Audience :: Science/Research", "Intended Audience :: Manufacturing", - "Topic :: Scientific/Engineering :: Artificial Intelligence", - "Topic :: Software Development :: Libraries", + "Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator", + "Topic :: Software Development :: Libraries :: Python Modules", "Operating System :: OS Independent", ] include = [ {path="examples/", format=["sdist", "wheel"]} ] - # '^' limits to the next major version, '~' limits to the next minor version # e.g. ^3.9.0: 3.9.0 <= x < 4.0.0 and ~3.9.0: 3.9.0 <= x < 3.10.0 [tool.poetry.dependencies] -- GitLab From 55eea2bfa62aec8481562ea869ed2c76c1d684d2 Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Wed, 2 Apr 2025 11:43:40 +0200 Subject: [PATCH 14/16] adress review --- AUTHORS.rst | 3 +-- README.rst | 15 ++++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/AUTHORS.rst b/AUTHORS.rst index 388c5ff..41d1af6 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -12,9 +12,8 @@ These individuals have contributed to this repository (eta_connect) through deve - *Jerome Stock* - *Julius Balzer* - *Mikael Hailu* -- [Others ] -Legacy Contributions +Legacy Contributors -------------------- The original eta_utility framework laid the foundation for this repository. Main contributors to the connections include: diff --git a/README.rst b/README.rst index 221e2f5..df0e334 100644 --- a/README.rst +++ b/README.rst @@ -3,24 +3,25 @@ ETA Connect *ETA Connect* is a Python package designed to manage and facilitate inbound as well as outbound connections to various endpoints, including PLC controllers, field devices, and API services. The package aims to provide standardized connectivity through one unified notation across multiple communication protocols, currently supporting OPC UA, Modbus TCP, and REST. -If you want to record timeseries continuously, you can also use the `DataRecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. +If you want to record timeseries continuously, you can also use the `Datarecorder Application <https://git.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-datarecorder>`_ which uses the *eta_connect* package. Currently, only StatusConnectionType-Connections are supported by the Datarecorder. Docs ******* -`Full documentation can be found here <https://git-pages.ptw.maschinenbau.tu-darmstadt.de/eta-fabrik/public/eta-connect/>`_ +`Full documentation can be found here <https://eta-connect.readthedocs.io/>`_ .. warning:: This is beta software. APIs and functionality may change significantly in major releases, and old major releases do not receive bug fixes. -Currently available Connection Protocols +Currently Available Connection Protocols ========================================= .. image:: _static/eta_connect.svg - :alt: ETA Connect + :alt: See the docs for ETA Connect's Class structure -There are two interfaces for connections: ``FieldConnectionType`` and ``SeriesConnectionType``. -While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle the current value of the endpoint, + +There are two interfaces for connections: ``StatusConnectionType`` and ``SeriesConnectionType``. +While ``StatusConnectionType`` implements ``read()`` and ``write()``, to handle the current value of the endpoint, ``SeriesConnectionType`` implements ``read_series()``, yielding historic data without an ability to write to endpoints. ``Connection`` s can implement both interfaces. @@ -29,7 +30,7 @@ While ``FieldConnectionType`` implements ``read()`` and ``write()``, to handle t :header-rows: 1 * - Connection - - FieldConnectionType + - StatusConnectionType - SeriesConnectionType * - Emonio (``Emonio``) - ✓ -- GitLab From 72e28ba8d65c9d2dc33d9a9421e1f40b7d149499 Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Wed, 2 Apr 2025 13:40:56 +0200 Subject: [PATCH 15/16] removed invalid link --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index df0e334..056e75f 100644 --- a/README.rst +++ b/README.rst @@ -7,7 +7,7 @@ If you want to record timeseries continuously, you can also use the `Datarecorde Docs ******* -`Full documentation can be found here <https://eta-connect.readthedocs.io/>`_ +`Full documentation can be found here: https://eta-connect.readthedocs.io/ (TODO: Make this a link as soon as first docs version is released.) .. warning:: -- GitLab From a857caa7c543f83c698628046730fd900ce90a0f Mon Sep 17 00:00:00 2001 From: Andreas Clement <a.clement@ptw.tu-darmstadt.de> Date: Wed, 2 Apr 2025 15:10:44 +0200 Subject: [PATCH 16/16] fix broken link --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 056e75f..d8141ed 100644 --- a/README.rst +++ b/README.rst @@ -7,7 +7,7 @@ If you want to record timeseries continuously, you can also use the `Datarecorde Docs ******* -`Full documentation can be found here: https://eta-connect.readthedocs.io/ (TODO: Make this a link as soon as first docs version is released.) +`Full documentation can be found here: eta-connect.readthedocs.io (TODO: Make this a link as soon as first docs version is released.) .. warning:: -- GitLab