|
3 | 3 |
|
4 | 4 | from ..utilities.message import Message, CodegreenDataError
|
5 | 5 | from ..utilities import metadata as meta
|
6 |
| -from . import entsoe as et |
7 |
| - |
| 6 | +from ..utilities.config import Config |
8 | 7 |
|
9 |
| -def _format_energy_data(df): |
10 |
| - start_time_column = df.pop("startTimeUTC") |
11 |
| - df.insert(0, "startTime", start_time_column) |
12 |
| - local_timezone = datetime.now().astimezone().tzinfo |
13 |
| - df["startTime"] = pd.to_datetime(df["startTime"], format="%Y%m%d%H%M").dt.tz_localize("UTC").dt.tz_convert(local_timezone) |
14 |
| - df.insert(1, "startTimeUTC", start_time_column) |
15 |
| - return df |
| 8 | +from . import entsoe as et |
| 9 | +from . import offline as off |
16 | 10 |
|
17 |
| -def energy(country, start_time, end_time, type="generation", interval60=True) -> dict: |
| 11 | +def energy(country, start_time, end_time, type="generation") -> dict: |
18 | 12 | """
|
19 | 13 | Returns hourly time series of energy production mix for a specified country and time range.
|
20 | 14 |
|
@@ -81,14 +75,25 @@ def energy(country, start_time, end_time, type="generation", interval60=True) ->
|
81 | 75 | e_source = meta.get_country_energy_source(country)
|
82 | 76 | if e_source == "ENTSOE":
|
83 | 77 | if type == "generation":
|
84 |
| - energy_data = et.get_actual_production_percentage( |
85 |
| - country, start_time, end_time, interval60 |
86 |
| - ) |
87 |
| - energy_data["data"] = _format_energy_data(energy_data["data"]) |
88 |
| - return energy_data |
| 78 | + """ |
| 79 | + let local_found= false |
| 80 | + see if caching is enabled, if yes, first check in the cache |
| 81 | + if not, |
| 82 | + check if offline data is enabled |
| 83 | + if yes, check is data is available locally |
| 84 | + if no, go online |
| 85 | + """ |
| 86 | + offline_data = off.get_offline_data(country,start_time,end_time) |
| 87 | + if offline_data["available"] is True and offline_data["partial"] is False: |
| 88 | + # todo fix this if partial get remaining data and merge instead of fetching the complete data |
| 89 | + return {"data":offline_data["data"],"data_available":True,"error":"None","time_interval":60,"message":"Data from offline source"} |
| 90 | + else: |
| 91 | + energy_data = et.get_actual_production_percentage(country, start_time, end_time, interval60=True) |
| 92 | + energy_data["data"] = energy_data["data"] |
| 93 | + return energy_data |
89 | 94 | elif type == "forecast":
|
90 | 95 | energy_data = et.get_forecast_percent_renewable(country, start_time, end_time)
|
91 |
| - energy_data["data"] = _format_energy_data(energy_data["data"]) |
| 96 | + energy_data["data"] = energy_data["data"] |
92 | 97 | return energy_data
|
93 | 98 | else:
|
94 | 99 | raise CodegreenDataError(Message.NO_ENERGY_SOURCE)
|
|
0 commit comments