mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 08:55:15 +00:00
Manual edits to remove remaining code style errors
This commit is contained in:
parent
3045d53bd6
commit
c3f10df277
@ -19,7 +19,7 @@ COPY requirements.txt requirements.txt
|
|||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
COPY config.example.py config.py
|
COPY config.py config.py
|
||||||
|
|
||||||
ENTRYPOINT []
|
ENTRYPOINT []
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@ Unter Macos (benötigt [Homebrew](https://brew.sh)):
|
|||||||
brew install make
|
brew install make
|
||||||
```
|
```
|
||||||
|
|
||||||
Nun `config.example.py` anpassen und dann in `config.py` umbennenen. Anschließend kann der Server über `make run` gestartet werden.
|
Nun `config.py` anpassen.
|
||||||
|
Anschließend kann der Server über `make run` gestartet werden.
|
||||||
Eine vollständige Übersicht über die wichtigsten Kurzbefehle gibt `make help`.
|
Eine vollständige Übersicht über die wichtigsten Kurzbefehle gibt `make help`.
|
||||||
|
|
||||||
### Ausführliche Anleitung
|
### Ausführliche Anleitung
|
||||||
@ -76,7 +77,7 @@ gefolgt von einem erneuten `pip install -r requirements.txt`.
|
|||||||
|
|
||||||
## Nutzung
|
## Nutzung
|
||||||
|
|
||||||
`config.example.py` anpassen und dann in config.py umbennenen
|
Einstellungen in `config.py` anpassen.
|
||||||
Um das System zu nutzen, führen Sie `flask_server.py` aus, damit wird der Server gestartet
|
Um das System zu nutzen, führen Sie `flask_server.py` aus, damit wird der Server gestartet
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@ On MacOS (requires [Homebrew](https://brew.sh)):
|
|||||||
brew install make
|
brew install make
|
||||||
```
|
```
|
||||||
|
|
||||||
Next, adjust `config.example.py` and rename it to `config.py`. The server can then be started with `make run`. A full overview of the main shortcuts is given by `make help`.
|
Next, adjust `config.py`.
|
||||||
|
The server can then be started with `make run`. A full overview of the main shortcuts is given by `make help`.
|
||||||
|
|
||||||
### Detailed Instructions
|
### Detailed Instructions
|
||||||
|
|
||||||
@ -71,7 +72,8 @@ Followed by a renewed `pip install -r requirements.txt`.
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Adjust `config.example.py` and rename it to `config.py`. To use the system, run `flask_server.py`, which starts the server:
|
Adjust `config.py`.
|
||||||
|
To use the system, run `flask_server.py`, which starts the server:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./flask_server.py
|
./flask_server.py
|
||||||
|
@ -27,7 +27,7 @@ def get_start_enddate(prediction_hours=48, startdate=None):
|
|||||||
############
|
############
|
||||||
# Parameter
|
# Parameter
|
||||||
############
|
############
|
||||||
if startdate == None:
|
if startdate is None:
|
||||||
date = (datetime.now().date() + timedelta(hours=prediction_hours)).strftime(
|
date = (datetime.now().date() + timedelta(hours=prediction_hours)).strftime(
|
||||||
"%Y-%m-%d"
|
"%Y-%m-%d"
|
||||||
)
|
)
|
@ -1,30 +1,28 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
import matplotlib
|
import matplotlib
|
||||||
|
|
||||||
matplotlib.use(
|
# Sets the Matplotlib backend to 'Agg' for rendering plots in environments without a display
|
||||||
"Agg"
|
matplotlib.use("Agg")
|
||||||
) # Sets the Matplotlib backend to 'Agg' for rendering plots in environments without a display
|
from datetime import timedelta
|
||||||
from datetime import datetime, timedelta
|
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from config import *
|
|
||||||
from flask import Flask, jsonify, redirect, request, send_from_directory, url_for
|
from flask import Flask, jsonify, redirect, request, send_from_directory, url_for
|
||||||
|
|
||||||
from modules.class_akku import *
|
from modules.class_load import LoadForecast
|
||||||
from modules.class_ems import *
|
from modules.class_load_container import Gesamtlast
|
||||||
from modules.class_heatpump import *
|
from modules.class_load_corrector import LoadPredictionAdjuster
|
||||||
from modules.class_load import *
|
from modules.class_optimize import isfloat, optimization_problem
|
||||||
from modules.class_load_container import *
|
from modules.class_pv_forecast import PVForecast
|
||||||
from modules.class_load_corrector import *
|
from modules.class_soc_calc import BatteryDataProcessor
|
||||||
from modules.class_optimize import *
|
from modules.class_strompreis import HourlyElectricityPriceForecast
|
||||||
from modules.class_pv_forecast import *
|
|
||||||
from modules.class_soc_calc import *
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
from modules.class_sommerzeit import *
|
from config import db_config, get_start_enddate, optimization_hours, prediction_hours
|
||||||
from modules.class_strompreis import *
|
|
||||||
from modules.visualize import *
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
@ -16,12 +13,6 @@ from sklearn.metrics import mean_squared_error, r2_score
|
|||||||
# from sklearn.preprocessing import MinMaxScaler
|
# from sklearn.preprocessing import MinMaxScaler
|
||||||
# from sqlalchemy import create_engine
|
# from sqlalchemy import create_engine
|
||||||
|
|
||||||
# Add the parent directory to sys.path
|
|
||||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
||||||
from config import *
|
|
||||||
|
|
||||||
from modules.class_load import *
|
|
||||||
|
|
||||||
|
|
||||||
class LoadPredictionAdjuster:
|
class LoadPredictionAdjuster:
|
||||||
def __init__(self, measured_data, predicted_data, load_forecast):
|
def __init__(self, measured_data, predicted_data, load_forecast):
|
||||||
|
@ -1,34 +1,29 @@
|
|||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
import matplotlib
|
import matplotlib
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from modules.class_akku import *
|
from modules.class_akku import PVAkku
|
||||||
from modules.class_ems import *
|
from modules.class_ems import EnergieManagementSystem, Wechselrichter
|
||||||
from modules.class_haushaltsgeraet import *
|
from modules.class_haushaltsgeraet import Haushaltsgeraet
|
||||||
from modules.class_heatpump import *
|
from modules.visualize import visualisiere_ergebnisse
|
||||||
from modules.class_inverter import *
|
|
||||||
from modules.class_load import *
|
|
||||||
from modules.class_load_container import *
|
|
||||||
from modules.class_pv_forecast import *
|
|
||||||
from modules.class_sommerzeit import *
|
|
||||||
from modules.visualize import *
|
|
||||||
|
|
||||||
matplotlib.use("Agg") # Setzt das Backend auf Agg
|
matplotlib.use("Agg") # Setzt das Backend auf Agg
|
||||||
import random
|
import random
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from deap import algorithms, base, creator, tools
|
from deap import algorithms, base, creator, tools
|
||||||
|
|
||||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
from config import *
|
from config import moegliche_ladestroeme_in_prozent
|
||||||
|
|
||||||
|
|
||||||
def isfloat(num):
|
def isfloat(num):
|
||||||
try:
|
try:
|
||||||
float(num)
|
float(num)
|
||||||
return True
|
return True
|
||||||
except:
|
except ValueError:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
@ -213,7 +208,7 @@ class optimization_problem:
|
|||||||
def evaluate(self, individual, ems, parameter, start_hour, worst_case):
|
def evaluate(self, individual, ems, parameter, start_hour, worst_case):
|
||||||
try:
|
try:
|
||||||
o = self.evaluate_inner(individual, ems, start_hour)
|
o = self.evaluate_inner(individual, ems, start_hour)
|
||||||
except:
|
except Exception:
|
||||||
return (100000.0,)
|
return (100000.0,)
|
||||||
|
|
||||||
gesamtbilanz = o["Gesamtbilanz_Euro"]
|
gesamtbilanz = o["Gesamtbilanz_Euro"]
|
||||||
@ -339,7 +334,7 @@ class optimization_problem:
|
|||||||
############
|
############
|
||||||
# Parameter
|
# Parameter
|
||||||
############
|
############
|
||||||
if startdate == None:
|
if startdate is None:
|
||||||
date = (
|
date = (
|
||||||
datetime.now().date() + timedelta(hours=self.prediction_hours)
|
datetime.now().date() + timedelta(hours=self.prediction_hours)
|
||||||
).strftime("%Y-%m-%d")
|
).strftime("%Y-%m-%d")
|
||||||
@ -437,7 +432,7 @@ class optimization_problem:
|
|||||||
##############
|
##############
|
||||||
opti_param = {}
|
opti_param = {}
|
||||||
opti_param["haushaltsgeraete"] = 0
|
opti_param["haushaltsgeraete"] = 0
|
||||||
if spuelmaschine != None:
|
if spuelmaschine is not None:
|
||||||
opti_param["haushaltsgeraete"] = 1
|
opti_param["haushaltsgeraete"] = 1
|
||||||
|
|
||||||
self.setup_deap_environment(opti_param, start_hour)
|
self.setup_deap_environment(opti_param, start_hour)
|
||||||
|
@ -69,7 +69,9 @@ class PVForecast:
|
|||||||
f"Die Vorhersage muss mindestens {self.prediction_hours} Stunden umfassen, aber es wurden nur {len(self.forecast_data)} Stunden vorhergesagt."
|
f"Die Vorhersage muss mindestens {self.prediction_hours} Stunden umfassen, aber es wurden nur {len(self.forecast_data)} Stunden vorhergesagt."
|
||||||
)
|
)
|
||||||
|
|
||||||
def update_ac_power_measurement(self, date_time=None, ac_power_measurement=None):
|
def update_ac_power_measurement(
|
||||||
|
self, date_time=None, ac_power_measurement=None
|
||||||
|
) -> bool:
|
||||||
found = False
|
found = False
|
||||||
input_date_hour = date_time.replace(minute=0, second=0, microsecond=0)
|
input_date_hour = date_time.replace(minute=0, second=0, microsecond=0)
|
||||||
|
|
||||||
@ -81,6 +83,7 @@ class PVForecast:
|
|||||||
forecast.ac_power_measurement = ac_power_measurement
|
forecast.ac_power_measurement = ac_power_measurement
|
||||||
found = True
|
found = True
|
||||||
break
|
break
|
||||||
|
return found
|
||||||
|
|
||||||
def process_data(self, data):
|
def process_data(self, data):
|
||||||
self.meta = data.get("meta", {})
|
self.meta = data.get("meta", {})
|
||||||
|
@ -295,6 +295,7 @@ class BatteryDataProcessor:
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# MariaDB Verbindungsdetails
|
# MariaDB Verbindungsdetails
|
||||||
|
config = {}
|
||||||
|
|
||||||
# Parameter festlegen
|
# Parameter festlegen
|
||||||
voltage_high_threshold = 55.4 # 100% SoC
|
voltage_high_threshold = 55.4 # 100% SoC
|
||||||
|
@ -6,7 +6,7 @@ import matplotlib.pyplot as plt
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from matplotlib.backends.backend_pdf import PdfPages
|
from matplotlib.backends.backend_pdf import PdfPages
|
||||||
|
|
||||||
from modules.class_sommerzeit import * # Ensure this matches the actual import path
|
from modules.class_sommerzeit import ist_dst_wechsel
|
||||||
|
|
||||||
matplotlib.use("Agg")
|
matplotlib.use("Agg")
|
||||||
|
|
||||||
|
@ -1,2 +1,7 @@
|
|||||||
[tool.isort]
|
[tool.isort]
|
||||||
profile = "black"
|
profile = "black"
|
||||||
|
|
||||||
|
[tool.ruff.lint]
|
||||||
|
ignore = [
|
||||||
|
"F841", # don't complain about unused variables
|
||||||
|
]
|
||||||
|
1
test.py
1
test.py
@ -4,7 +4,6 @@ from pprint import pprint
|
|||||||
|
|
||||||
# Import necessary modules from the project
|
# Import necessary modules from the project
|
||||||
from modules.class_optimize import optimization_problem
|
from modules.class_optimize import optimization_problem
|
||||||
from modules.visualize import *
|
|
||||||
|
|
||||||
start_hour = 10
|
start_hour = 10
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user