mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 08:55:15 +00:00
* Add package API documentation generation Add generation of the API documentation for akkudoktoreos and akkudoktoreosserver packages. The API documentation is generated by the Sphinx autosummary extension. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com> * Enable Google style source commenting and documentation generation. Enable automatic documentation generation from Google style docstrings in the source. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com> * Check Google style source commenting. Check Google style commenting by the appropriate ruff rules. Commenting is _NOT_ enforced. Missing docstrings are ignored. Minor commenting quirks of the code base are adapted. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com> * Improve Markdown handling and switch to Markdown documentation. Switch to Markdown for the documentation files to improve the user and developer experience (see issue #181). Keep files with special directives for automatic API documentation in RST format. The directives expect RST. Also add dummy handling for openai/ swagger server documentation. The openai interface definition is for now taken from the fastapi PR as EOS will switch to fastAPI. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com> --------- Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com> Co-authored-by: Normann <github@koldrack.com>
51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
import numpy as np
|
|
|
|
|
|
class Haushaltsgeraet:
|
|
def __init__(self, hours=None, verbrauch_wh=None, dauer_h=None):
|
|
self.hours = hours # Total duration for which the planning is done
|
|
self.verbrauch_wh = verbrauch_wh # Total energy consumption of the device in kWh
|
|
self.dauer_h = dauer_h # Duration of use in hours
|
|
self.lastkurve = np.zeros(self.hours) # Initialize the load curve with zeros
|
|
|
|
def set_startzeitpunkt(self, start_hour, global_start_hour=0):
|
|
"""Sets the start time of the device and generates the corresponding load curve.
|
|
|
|
:param start_hour: The hour at which the device should start.
|
|
"""
|
|
self.reset()
|
|
# Check if the duration of use is within the available time frame
|
|
if start_hour + self.dauer_h > self.hours:
|
|
raise ValueError("The duration of use exceeds the available time frame.")
|
|
if start_hour < global_start_hour:
|
|
raise ValueError("The start time is earlier than the available time frame.")
|
|
|
|
# Calculate power per hour based on total consumption and duration
|
|
leistung_pro_stunde = self.verbrauch_wh / self.dauer_h # Convert to watt-hours
|
|
|
|
# Set the power for the duration of use in the load curve array
|
|
self.lastkurve[start_hour : start_hour + self.dauer_h] = leistung_pro_stunde
|
|
|
|
def reset(self):
|
|
"""Resets the load curve."""
|
|
self.lastkurve = np.zeros(self.hours)
|
|
|
|
def get_lastkurve(self):
|
|
"""Returns the current load curve."""
|
|
return self.lastkurve
|
|
|
|
def get_last_fuer_stunde(self, hour):
|
|
"""Returns the load for a specific hour.
|
|
|
|
:param hour: The hour for which the load is queried.
|
|
:return: The load in watts for the specified hour.
|
|
"""
|
|
if hour < 0 or hour >= self.hours:
|
|
raise ValueError("The specified hour is outside the available time frame.")
|
|
|
|
return self.lastkurve[hour]
|
|
|
|
def spaetestmoeglicher_startzeitpunkt(self):
|
|
"""Returns the latest possible start time at which the device can still run completely."""
|
|
return self.hours - self.dauer_h
|