From c046e13529d0f10c1cda36f7cef74c443b2ad75f Mon Sep 17 00:00:00 2001 From: mistangl Date: Fri, 4 Apr 2025 10:32:52 +0200 Subject: [PATCH] Erste Fassung eingestellt --- bin/dia.bat | 4 +++ bin/get_cmd.bat | 4 +++ bin/install_py.bat | 15 +++++++++ bin/manage_interpreter.bat | 28 ++++++++++++++++ bin/setenv.bat | 15 +++++++++ lib/dia.py | 69 ++++++++++++++++++++++++++++++++++++++ lib/requirements.txt | 9 +++++ 7 files changed, 144 insertions(+) create mode 100644 bin/dia.bat create mode 100644 bin/get_cmd.bat create mode 100644 bin/install_py.bat create mode 100644 bin/manage_interpreter.bat create mode 100644 bin/setenv.bat create mode 100644 lib/dia.py create mode 100644 lib/requirements.txt diff --git a/bin/dia.bat b/bin/dia.bat new file mode 100644 index 0000000..cc0bd81 --- /dev/null +++ b/bin/dia.bat @@ -0,0 +1,4 @@ +@echo off +CALL manage_interpreter.bat activate_interpreter +python %PROJECT_LIB%\dia.py +CALL manage_interpreter.bat deactivate_interpreter diff --git a/bin/get_cmd.bat b/bin/get_cmd.bat new file mode 100644 index 0000000..4dab2dd --- /dev/null +++ b/bin/get_cmd.bat @@ -0,0 +1,4 @@ +@echo off +call setenv.bat +start + diff --git a/bin/install_py.bat b/bin/install_py.bat new file mode 100644 index 0000000..e57772f --- /dev/null +++ b/bin/install_py.bat @@ -0,0 +1,15 @@ +call setenv.bat +if not exist %PROJECT%\.venv ( + ECHO Initialisiere Python virtual environment... + python -m venv %PROJECT%\.venv --upgrade-deps + ECHO Erfolgreich. + + call %PROJECT%\.venv\Scripts\activate.bat + ECHO Installiere erforderliche Python Packages... + pip install -r %PROJECT_LIB%/requirements.txt -q + ECHO Erfolgreich + deactivate + + ) ELSE ( + ECHO Erforderliche Python Packages bereits installiert! + ) diff --git a/bin/manage_interpreter.bat b/bin/manage_interpreter.bat new file mode 100644 index 0000000..4b45d78 --- /dev/null +++ b/bin/manage_interpreter.bat @@ -0,0 +1,28 @@ +@echo off +CALL setenv.bat +IF DEFINED NETWORK_INTERPRETER_PATH ( + goto %~1_network + +) ELSE ( + goto %~1_local +) + +:activate_interpreter_local +IF NOT EXIST %PROJECT%\.venv CALL %PROJECT_BIN%\install_py.bat +CALL %PROJECT%\.venv\Scripts\activate.bat +goto :eof + +:deactivate_interpreter_local +deactivate +goto :eof + +:activate_interpreter_network +SET OLD_PATH=%PATH% +SET PATH=%NETWORK_INTERPRETER_PATH%;%PATH% +goto :eof + +:deactivate_interpreter_network +SET PATH=%OLD_PATH% +SET OLD_PATH= +SET NETWORK_INTERPRETER_PATH= +goto :eof diff --git a/bin/setenv.bat b/bin/setenv.bat new file mode 100644 index 0000000..617d7e3 --- /dev/null +++ b/bin/setenv.bat @@ -0,0 +1,15 @@ +@echo off +REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt +pushd %~dp0\.. + +set PROJECT=%cd% +set PROJECT_BIN=%PROJECT%\bin +set PROJECT_CFG=%PROJECT%\cfg +set PROJECT_LIB=%PROJECT%\lib +set PROJECT_DATA=%PROJECT%\data +set PROJECT_WORK=%PROJECT%\work +set PROJECT_LOG=%PROJECT%\log + +if not exist %PROJECT%\work mkdir %PROJECT%\work +if not exist %PROJECT%\log mkdir %PROJECT%\log +if not exist %PROJECT%\data mkdir %PROJECT%\data diff --git a/lib/dia.py b/lib/dia.py new file mode 100644 index 0000000..61cd915 --- /dev/null +++ b/lib/dia.py @@ -0,0 +1,69 @@ +import numpy as np + +import matplotlib.pyplot as plt +import pandas as pd + +# Daten als DataFrame erstellen +data = { + "Datum": [ + "31.12.2024", "18.07.2024", "31.12.2023", "31.10.2023", "30.09.2023", "12.06.2023", + "01.02.2023", "31.12.2022", "30.06.2022", "01.02.2022", "31.12.2021", "03.11.2021", + "18.05.2021", "01.02.2021", "31.12.2020", "31.12.2019", "01.09.2019" + ], + "Verbrauch (kWh)": [ + 707, 608, 523, 472, 456, 432, 390, 364, 292, 267, 246, 218, 203, 189, 167, 95, 75 + ], + "Ablesungstyp": [ + "Netzbetreiber", "Kunden", "Netzbetreiber", "Netzbetreiber", "Netzbetreiber", "Kunden", + "Netzbetreiber", "Netzbetreiber", "Netzbetreiber", "Netzbetreiber", "Kunden", "Kunden", + "Kunden", "Netzbetreiber", "Netzbetreiber", "Netzbetreiber", "Maschinelle Schätzung" + ] +} + +df = pd.DataFrame(data) +df["Datum"] = pd.to_datetime(df["Datum"], format="%d.%m.%Y") +df = df.sort_values("Datum") + +# Plot erstellen +plt.figure(figsize=(12, 6)) +plt.plot(df["Datum"], df["Verbrauch (kWh)"], marker='o', label="Verbrauch (kWh)") + +# Beschriftungen und Titel +plt.title("Verbrauchsentwicklung (kWh) über Zeit", fontsize=14) +plt.xlabel("Datum", fontsize=12) +plt.ylabel("Verbrauch (kWh)", fontsize=12) +plt.grid(True, linestyle='--', alpha=0.6) +plt.legend() +plt.xticks(rotation=45) +plt.tight_layout() + +# Plot anzeigen +plt.show() + + +# Differenzen zwischen den Verbrauchswerten berechnen +df["Differenz (kWh)"] = df["Verbrauch (kWh)"].diff() +df["Tage zwischen Ablesungen"] = df["Datum"].diff().dt.days + +# Durchschnittlicher täglicher Verbrauch berechnen +df["Durchschnittlicher Tagesverbrauch (kWh)"] = df["Differenz (kWh)"] / df["Tage zwischen Ablesungen"] + +# Durchschnittlicher monatlicher Verbrauch (30 Tage) berechnen +df["Durchschnittlicher Monatsverbrauch (kWh)"] = df["Durchschnittlicher Tagesverbrauch (kWh)"] * 30 + +# Plot erstellen +plt.figure(figsize=(12, 6)) +plt.plot(df["Datum"], df["Verbrauch (kWh)"], marker='o', label="Verbrauch (kWh)") +plt.plot(df["Datum"], df["Durchschnittlicher Monatsverbrauch (kWh)"], marker='x', linestyle='--', label="Durchschnittlicher Monatsverbrauch (kWh)") + +# Beschriftungen und Titel +plt.title("Verbrauchsentwicklung (kWh) mit durchschnittlichem Monatsverbrauch", fontsize=14) +plt.xlabel("Datum", fontsize=12) +plt.ylabel("Verbrauch (kWh)", fontsize=12) +plt.grid(True, linestyle='--', alpha=0.6) +plt.legend() +plt.xticks(rotation=45) +plt.tight_layout() + +# Plot anzeigen +plt.show() diff --git a/lib/requirements.txt b/lib/requirements.txt new file mode 100644 index 0000000..88b4616 --- /dev/null +++ b/lib/requirements.txt @@ -0,0 +1,9 @@ +numpy==1.26.1 +pandas==2.1.1 +python-dateutil==2.8.2 +pytz==2023.3.post1 +six==1.16.0 +tzdata==2023.3 +et-xmlfile==1.1.0 +matplotlib==3.10.0 +openpyxl==3.1.2