diff --git a/.all-contributorsrc b/.all-contributorsrc index 50fe2da4..a69bf6bf 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -217,6 +217,33 @@ "contributions": [ "code" ] + }, + { + "login": "sumana-2705", + "name": "Sumana Sree Angajala", + "avatar_url": "https://avatars.githubusercontent.com/u/110307215?v=4", + "profile": "https://github.com/sumana-2705", + "contributions": [ + "code" + ] + }, + { + "login": "EmilyIsCoding", + "name": "Emily", + "avatar_url": "https://avatars.githubusercontent.com/u/98443131?v=4", + "profile": "https://github.com/EmilyIsCoding", + "contributions": [ + "test" + ] + }, + { + "login": "sergejlazuk", + "name": "sergejla", + "avatar_url": "https://avatars.githubusercontent.com/u/33606741?v=4", + "profile": "https://github.com/sergejlazuk", + "contributions": [ + "question" + ] } ], "contributorsPerLine": 7, diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 624a97f3..497d82d9 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = True tag = True -current_version = 1.0.75 +current_version = 1.0.81 message = Bump version: {current_version} → {new_version} [skip ci] [bumpversion:file:pyproject.toml] diff --git a/.env.example b/.env.example index 38c52a3b..2aea5fda 100644 --- a/.env.example +++ b/.env.example @@ -19,6 +19,10 @@ SOLIS_CLOUD_API_PORT = '13333' # User needs to add their GivEnergy API details GIVENERGY_API_KEY = 'user_givenergy_api_key' +# To connect to a Victron system use the environment variables below to set the username and password +#VICTRON_USER=username +#VICTRON_PASS=password + # User needs to add their GivEnergy API details SOLARMAN_API_URL = 'https://home.solarmanpv.com/maintain-s/history/power' SOLARMAN_TOKEN = 'user_solarman_token' diff --git a/.github/workflows/pytest.yaml b/.github/workflows/pytest.yaml index f22565b3..ec5addb6 100644 --- a/.github/workflows/pytest.yaml +++ b/.github/workflows/pytest.yaml @@ -10,7 +10,7 @@ on: types: [opened, synchronize, reopened, ready_for_review] jobs: call-run-python-tests: - uses: openclimatefix/.github/.github/workflows/python-test.yml@main + uses: openclimatefix/.github/.github/workflows/python-test.yml@issue/pip-all with: # pytest-cov looks at this folder pytest_cov_dir: "quartz_solar_forecast" diff --git a/README.md b/README.md index b1fd94ae..a5a23500 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,16 @@ # Quartz Solar Forecast -[![All Contributors](https://img.shields.io/badge/all_contributors-23-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-26-orange.svg?style=flat-square)](#contributors-) +![image](https://github.com/user-attachments/assets/6563849b-b355-4842-93e4-61c15a9a9ebf) +[![tags badge](https://img.shields.io/github/v/tag/openclimatefix/open-source-quartz-solar-forecast?include_prereleases&sort=semver&color=FFAC5F)](https://github.com/openclimatefix/open-source-quartz-solar-forecast/tags) +[![pypi badge](https://img.shields.io/pypi/v/quartz-solar-forecast?&color=07BCDF)](https://pypi.org/project/quartz-solar-forecast/) +[![ease of contribution: easy](https://img.shields.io/badge/ease%20of%20contribution:%20easy-32bd50)](https://github.com/openclimatefix/ocf-meta-repo?tab=readme-ov-file#overview-of-ocfs-nowcasting-repositories) +[![Python package tests](https://github.com/openclimatefix/open-source-quartz-solar-forecast/actions/workflows/pytest.yaml/badge.svg)](https://github.com/openclimatefix/open-source-quartz-solar-forecast/actions/workflows/pytest.yaml) + + The aim of the project is to build an open source PV forecast that is free and easy to use. The forecast provides the expected generation in `kw` for 0 to 48 hours for a single PV site. @@ -35,16 +42,10 @@ A colab notebook providing some examples can be found [here](https://colab.resea To generate solar forecasts and save them into a CSV file, follow these steps: -1. Navigate to the scripts directory - -```bash -cd scripts -``` - -2. Run the forecast_csv.py script with desired inputs +- Run the forecast_csv.py script with desired inputs ```bash -python forecast_csv.py +python scripts/forecast_csv.py ``` Replace the --init_time_freq, --start_datetime, --end_datetime, and --site_name with your desired forecast initialization frequency (in hours), start datetime, end datetime, and the name of the forecast or site, respectively. @@ -258,6 +259,9 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d aayush
aayush

📖 Rohan Singh
Rohan Singh

💻 + Sumana Sree Angajala
Sumana Sree Angajala

💻 + Emily
Emily

⚠️ + sergejla
sergejla

💬 diff --git a/examples/inverter_example.py b/examples/inverter_example.py index ec82bd49..fc950f37 100644 --- a/examples/inverter_example.py +++ b/examples/inverter_example.py @@ -14,7 +14,7 @@ def main(save_outputs: bool = False): ts = pd.to_datetime(timestamp_str) # make input data with live enphase, solis, givenergy, or solarman data - site_live = PVSite(latitude=51.75, longitude=-1.25, capacity_kwp=1.25, inverter_type="enphase") # inverter_type="enphase", "solis", "givenergy", or "solarman" + site_live = PVSite(latitude=51.75, longitude=-1.25, capacity_kwp=1.25, inverter_type="enphase") # inverter_type="enphase", "solis", "givenergy", "solarman" or "victron" # make input data with nan data site_no_live = PVSite(latitude=51.75, longitude=-1.25, capacity_kwp=1.25) diff --git a/pyproject.toml b/pyproject.toml index c292fc95..cc21213b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "quartz_solar_forecast" -version = "1.0.75" +version = "1.0.81" description = "Open Source Solar Forecasting for a Site" authors = [ { name = "Peter Dudfield", email = "info@openclimatefix.org" } @@ -43,6 +43,9 @@ package-data = { "quartz_solar_forecast" = ["*"] } [project.optional-dependencies] dev = [] +# additional vendor-specific dependencies for connecting to inverter APIs +inverters = ["ocf_vrmapi"] # victron +all = ["ocf_vrmapi"] [tool.mypy] diff --git a/quartz_solar_forecast/forecast.py b/quartz_solar_forecast/forecast.py index 7cc7f2dd..a75647b0 100644 --- a/quartz_solar_forecast/forecast.py +++ b/quartz_solar_forecast/forecast.py @@ -1,4 +1,5 @@ from datetime import datetime, timedelta +import logging import pandas as pd @@ -6,6 +7,7 @@ from quartz_solar_forecast.forecasts import forecast_v1_tilt_orientation, TryolabsSolarPowerPredictor from quartz_solar_forecast.pydantic_models import PVSite +log = logging.getLogger(__name__) def predict_ocf( site: PVSite, model=None, ts: datetime | str = None, nwp_source: str = "icon" @@ -25,6 +27,16 @@ def predict_ocf( if isinstance(ts, str): ts = datetime.fromisoformat(ts) + if site.capacity_kwp > 4: + log.warning("Your site capacity is greater than 4kWp, " + "however the model is trained on sites with capacity <= 4kWp." + "We therefore will run the model with a capacity of 4 kWp, " + "and we'll scale the results afterwards.") + capacity_kwp_original = site.capacity_kwp + site.capacity_kwp = 4 + else: + capacity_kwp_original = site.capacity_kwp + # make pv and nwp data from nwp_source nwp_xr = get_nwp(site=site, ts=ts, nwp_source=nwp_source) pv_xr = make_pv_data(site=site, ts=ts) @@ -32,6 +44,10 @@ def predict_ocf( # load and run models pred_df = forecast_v1_tilt_orientation(nwp_source, nwp_xr, pv_xr, ts, model=model) + # scale the results if the capacity is different + if capacity_kwp_original != site.capacity_kwp: + pred_df["power_kw"] = pred_df["power_kw"] * capacity_kwp_original / site.capacity_kwp + return pred_df diff --git a/quartz_solar_forecast/inverters/victron.py b/quartz_solar_forecast/inverters/victron.py new file mode 100644 index 00000000..3414f132 --- /dev/null +++ b/quartz_solar_forecast/inverters/victron.py @@ -0,0 +1,48 @@ +from typing import Callable + +import pandas as pd +from datetime import datetime, timedelta +from quartz_solar_forecast.inverters.inverter import AbstractInverter +from pydantic import Field +from pydantic_settings import BaseSettings, SettingsConfigDict +try: + from ocf_vrmapi.vrm import VRM_API +except: + print("Tried to import ocf_vrmapi but couldnt, Victron Inverter functions won't work") + +class VictronSettings(BaseSettings): + model_config = SettingsConfigDict(env_file='.env', extra='ignore') + + username: str = Field(alias="VICTRON_USER") + password: str = Field(alias="VICTRON_PASS") + + +class VictronInverter(AbstractInverter): + + def __init__(self, get_sites: Callable, get_kwh_stats: Callable): + self.__get_sites = get_sites + self.__get_kwh_stats = get_kwh_stats + + @classmethod + def from_settings(cls, settings: VictronSettings): + api = VRM_API(username=settings.username, password=settings.password) + get_sites = lambda: api.get_user_sites(api.user_id) + end = datetime.now() + start = end - timedelta(weeks=1) + get_kwh_stats = lambda site_id: api.get_kwh_stats(site_id, start=start, end=end) + return cls(get_sites, get_kwh_stats) + + def get_data(self, ts: pd.Timestamp) -> pd.DataFrame: + sites = self.__get_sites() + # get first site (bit of a guess) + first_site_id = sites["records"][0]["idSite"] + + stats = self.__get_kwh_stats(first_site_id) + + kwh = stats["records"]["kwh"] + + df = pd.DataFrame(kwh) + + df[0] = pd.to_datetime(df[0], unit='ms') + df.columns = ["timestamp", "power_kw"] + return df diff --git a/quartz_solar_forecast/pydantic_models.py b/quartz_solar_forecast/pydantic_models.py index e362e8c3..7dd2b307 100644 --- a/quartz_solar_forecast/pydantic_models.py +++ b/quartz_solar_forecast/pydantic_models.py @@ -6,6 +6,7 @@ from quartz_solar_forecast.inverters.mock import MockInverter from quartz_solar_forecast.inverters.solarman import SolarmanSettings, SolarmanInverter from quartz_solar_forecast.inverters.solis import SolisSettings, SolisInverter +from quartz_solar_forecast.inverters.victron import VictronSettings, VictronInverter class PVSite(BaseModel): @@ -41,6 +42,8 @@ def get_inverter(self): return GivEnergyInverter(GivEnergySettings()) elif self.inverter_type == 'solarman': return SolarmanInverter(SolarmanSettings()) + elif self.inverter_type == 'victron': + return VictronInverter.from_settings(VictronSettings()) else: return MockInverter() diff --git a/quartz_solar_forecast/utils/forecast_csv.py b/quartz_solar_forecast/utils/forecast_csv.py index 7bfdf1be..748b7bb7 100644 --- a/quartz_solar_forecast/utils/forecast_csv.py +++ b/quartz_solar_forecast/utils/forecast_csv.py @@ -3,45 +3,56 @@ from datetime import datetime, timedelta from quartz_solar_forecast.forecast import run_forecast from quartz_solar_forecast.pydantic_models import PVSite -import unittest -from unittest.mock import patch def generate_all_forecasts( - init_time_freq: int, - start: datetime, - end: datetime, - latitude: float, - longitude: float, - capacity_kwp: float) -> pd.DataFrame: + init_time_freq: int, + start: datetime, + end: datetime, + latitude: float, + longitude: float, + capacity_kwp: float, +) -> pd.DataFrame: all_forecasts = pd.DataFrame() init_time = start while init_time <= end: print(f"Running forecast for initialization time: {init_time}") - predictions_df = forecast_for_site(latitude, longitude, capacity_kwp, init_time=init_time) - predictions_df['forecast_init_time'] = init_time + predictions_df = forecast_for_site( + latitude, longitude, capacity_kwp, init_time=init_time + ) + predictions_df["forecast_init_time"] = init_time all_forecasts = pd.concat([all_forecasts, predictions_df]) init_time += timedelta(hours=init_time_freq) return all_forecasts -def forecast_for_site(latitude: float, - longitude: float, - capacity_kwp: float, - model: str = "gb", - init_time: datetime = None) -> pd.DataFrame: +def forecast_for_site( + latitude: float, + longitude: float, + capacity_kwp: float, + model: str = "gb", + init_time: datetime = None, +) -> pd.DataFrame: site = PVSite(latitude=latitude, longitude=longitude, capacity_kwp=capacity_kwp) predictions_df = run_forecast(site=site, model=model, ts=init_time) predictions_df.reset_index(inplace=True) - predictions_df.rename(columns={'index': 'datetime'}, inplace=True) + predictions_df.rename(columns={"index": "datetime"}, inplace=True) return predictions_df -def write_out_forecasts(init_time_freq, start_datetime, end_datetime, site_name, latitude, longitude, capacity_kwp): +def write_out_forecasts( + init_time_freq, + start_datetime, + end_datetime, + site_name, + latitude, + longitude, + capacity_kwp, +): """ Generates forecasts at specified intervals and saves them into a CSV file. @@ -58,9 +69,11 @@ def write_out_forecasts(init_time_freq, start_datetime, end_datetime, site_name, start_date = start.date() end = datetime.strptime(end_datetime, "%Y-%m-%d %H:%M:%S") end_date = end.date() - all_forecasts = generate_all_forecasts(init_time_freq, start, end, latitude, longitude, capacity_kwp) + all_forecasts = generate_all_forecasts( + init_time_freq, start, end, latitude, longitude, capacity_kwp + ) - output_dir = os.path.join(os.getcwd(), 'csv_forecasts') + output_dir = os.path.join(os.getcwd(), "csv_forecasts") if not os.path.exists(output_dir): os.makedirs(output_dir) output_file_name = f"forecast_{site_name}_{start_date}_{end_date}.csv" @@ -68,54 +81,3 @@ def write_out_forecasts(init_time_freq, start_datetime, end_datetime, site_name, all_forecasts.to_csv(output_file_path, index=False) print(f"Forecasts saved to {output_file_path}") -if __name__ == "__main__": - # please change the site name, start_datetime and end_datetime, latitude, longitude and capacity_kwp as per your requirement - write_out_forecasts( - init_time_freq=6, - start_datetime="2024-03-10 00:00:00", - end_datetime="2024-03-11 00:00:00", - site_name="Test", - latitude=51.75, - longitude=-1.25, - capacity_kwp=1.25 - ) - -class TestGenerateForecast(unittest.TestCase): - def setUp(self): - self.site_name = "TestCase" - self.latitude = 51.75 - self.longitude = -1.25 - self.capacity_kwp = 1.25 - self.start_datetime = "2024-03-10 00:00:00" - self.end_datetime = "2024-03-11 00:00:00" - self.init_time_freq = 6 - self.output_dir = os.path.join(os.getcwd(), 'csv_forecasts') - self.output_file_name = f"forecast_{self.site_name}_{self.start_datetime[:10]}_{self.end_datetime[:10]}.csv" - self.output_file_path = os.path.join(self.output_dir, self.output_file_name) - - @patch('forecast_csv.run_forecast') - def test_generate_forecast(self, mock_run_forecast): - mock_df = pd.DataFrame({ - 'datetime': [datetime(2024, 3, 10, 0, 0) + timedelta(hours=6 * i) for i in range(4)], - 'power_kw': [0.1, 0.5, 0.8, 0.6], - 'forecast_init_time': [datetime(2024, 3, 10, 0, 0)] * 4 - }) - mock_run_forecast.return_value = mock_df - - if not os.path.exists(self.output_dir): - os.makedirs(self.output_dir) - - write_out_forecasts(self.init_time_freq, - self.start_datetime, - self.end_datetime, - self.site_name, - self.latitude, - self.longitude, - self.capacity_kwp - ) - - self.assertTrue(os.path.exists(self.output_file_path)) - os.remove(self.output_file_path) - -if __name__ == '__main__': - unittest.main() diff --git a/scripts/forecast_csv.py b/scripts/forecast_csv.py new file mode 100644 index 00000000..4d10fa13 --- /dev/null +++ b/scripts/forecast_csv.py @@ -0,0 +1,11 @@ +if __name__ == "__main__": + # please change the site name, start_datetime and end_datetime, latitude, longitude and capacity_kwp as per your requirement + write_out_forecasts( + init_time_freq=6, + start_datetime="2024-03-10 00:00:00", + end_datetime="2024-03-11 00:00:00", + site_name="Test", + latitude=51.75, + longitude=-1.25, + capacity_kwp=1.25 + ) \ No newline at end of file diff --git a/tests/inverters/test_victron.py b/tests/inverters/test_victron.py new file mode 100644 index 00000000..44206d1e --- /dev/null +++ b/tests/inverters/test_victron.py @@ -0,0 +1,1460 @@ +import pandas as pd + +from quartz_solar_forecast.inverters.victron import VictronInverter + + +def test_get_data(): + inverter = VictronInverter(lambda: site_data, get_kwh_data) + + ts = pd.Timestamp.now() + df = inverter.get_data(ts) + assert df.shape == (543, 2) + assert list(df.columns) == ["timestamp", "power_kw"] + + +site_data = { + 'success': True, + 'records': [ + {'idSite': 1234, 'accessLevel': 1, 'owner': True, 'is_admin': True, 'name': 'Rooftop Solar', + 'identifier': 'd83add039270', 'idUser': 1234, 'pvMax': 0, 'timezone': 'Europe/London', 'phonenumber': None, + 'notes': '', + 'geofence': '{"type":"circle","radius":744.8847524459488,"center":{"lat":50.928066,"lng":-1.410089}}', + 'geofenceEnabled': False, 'realtimeUpdates': True, 'hasMains': 1, 'hasGenerator': 0, + 'noDataAlarmTimeout': None, 'alarmMonitoring': 1, 'invalidVRMAuthTokenUsedInLogRequest': 0, + 'syscreated': 1677237828, 'isPaygo': 0, 'paygoCurrency': None, 'paygoTotalAmount': None, 'idCurrency': 12, + 'currencyCode': 'GBP', 'currencySign': '£', 'currencyName': 'Sterling', 'inverterChargerControl': 1, + 'shared': False, 'device_icon': 'battery', 'dashboard_variations': {'only_grid_meter': False}}]} + + +def get_kwh_data(site_id: int): + assert site_id is 1234 + return kwh_data + + +kwh_data = { + 'success': True, + 'records': { + 'Bc': [[1726263854000, 0.0181884765625], + [1726264754000, 0.018218994140625], + [1726265654000, 0.0182037353515625], + [1726266554000, 0.036408424377441406], + [1726268354000, 0.0182037353515625], + [1726269254000, 0.0182037353515625], + [1726270154000, 0.0182037353515625], + [1726271954000, 0.036408424377441406], + [1726272854000, 0.0182037353515625], + [1726273754000, 0.0182037353515625], + [1726274654000, 0.0182037353515625], + [1726286354000, 0.0182037353515625], + [1726287254000, 0.018204212188720703], + [1726288154000, 0.0182037353515625], + [1726289054000, 0.0182037353515625], + [1726289954000, 0.0182037353515625], + [1726290854000, 0.0182037353515625], + [1726292654000, 0.0182037353515625], + [1726325054000, 0.018204212188720703], + [1726325954000, 0.05486755445599556], + [1726326854000, 0.08229465782642365], + [1726327754000, 0.009478759951889515], + [1726328654000, 0.018204689025878906], + [1726329554000, 0.10049791634082794], + [1726330454000, 0.01870117150247097], + [1726331354000, 0.018204212188720703], + [1726332254000, 0.10972080379724503], + [1726333154000, 0.018204212188720703], + [1726334054000, 0.027939796447753906], + [1726334954000, 0.018204689025878906], + [1726335854000, 0.14612731337547302], + [1726336754000, 0.018204689025878906], + [1726337654000, 0.0182037353515625], + [1726338554000, 0.0182037353515625], [1726339454000, 0.018218994140625], + [1726340354000, 0.0182037353515625], [1726342154000, 0.036407470703125], + [1726343954000, 0.0182037353515625], + [1726344854000, 0.0182037353515625], + [1726345754000, 0.0182037353515625], + [1726346654000, 0.036408424377441406], + [1726347554000, 0.0182037353515625], + [1726348454000, 0.0182037353515625], + [1726349354000, 0.0182037353515625], + [1726351154000, 0.0182037353515625], [1726352054000, 0.036407470703125], + [1726352954000, 0.018204689025878906], + [1726353854000, 0.0182037353515625], + [1726354754000, 0.0182037353515625], + [1726356554000, 0.0182037353515625], + [1726357454000, 0.0182037353515625], + [1726358354000, 0.0364079475402832], + [1726360154000, 0.0182037353515625], + [1726361054000, 0.0182037353515625], [1726372754000, 0.018218994140625], + [1726373654000, 0.0364079475402832], + [1726374554000, 0.0182037353515625], + [1726376354000, 0.0182037353515625], + [1726377254000, 0.0182037353515625], + [1726378154000, 0.036408424377441406], + [1726379054000, 0.0182037353515625], + [1726410554000, 0.0182037353515625], + [1726412354000, 0.018204212188720703], + [1726413254000, 0.0004974365001544356], + [1726414154000, 0.055109597742557526], + [1726415054000, 0.07331285625696182], + [1726415954000, 0.018204689025878906], + [1726416854000, 0.07331285625696182], + [1726417754000, 0.055109597742557526], + [1726418654000, 0.018204689025878906], + [1726419554000, 0.09151611477136612], + [1726420454000, 0.05510864406824112], + [1726421354000, 0.12792548537254333], + [1726422254000, 0.0461430549621582], [1726423154000, 0.07281494140625], + [1726424054000, 0.0182037353515625], + [1726424954000, 0.0182037353515625], + [1726425854000, 0.0182037353515625], + [1726426754000, 0.0182037353515625], + [1726427654000, 0.0182037353515625], + [1726428554000, 0.0182037353515625], + [1726429454000, 0.0182037353515625], + [1726430354000, 0.0364079475402832], + [1726432154000, 0.0182037353515625], + [1726433054000, 0.0182037353515625], + [1726433954000, 0.0182037353515625], + [1726434854000, 0.0182037353515625], + [1726435754000, 0.0182037353515625], + [1726436654000, 0.0182037353515625], + [1726437554000, 0.0182037353515625], + [1726438454000, 0.0182037353515625], + [1726439354000, 0.0182037353515625], + [1726440254000, 0.018204689025878906], + [1726441154000, 0.0182037353515625], + [1726442054000, 0.0182037353515625], [1726442954000, 0.018218994140625], + [1726443854000, 0.0182037353515625], + [1726444754000, 0.018204689025878906], + [1726445654000, 0.0182037353515625], + [1726446554000, 0.0182037353515625], + [1726448354000, 0.0182037353515625], + [1726459154000, 0.0182037353515625], + [1726460954000, 0.0364079475402832], + [1726461854000, 0.0182037353515625], [1726463654000, 0.036407470703125], + [1726464554000, 0.0182037353515625], + [1726466354000, 0.0182037353515625], + [1726468154000, 0.0182037353515625], + [1726470854000, 0.018204689025878906], + [1726488854000, 0.0182037353515625], + [1726515854000, 0.018204445019364357], + [1726516754000, 0.018204445019364357], + [1726517654000, 0.018204443156719208], + [1726518554000, 0.018204446882009506], + [1726520354000, 0.018204443156719208], + [1726521254000, 0.036408886313438416], + [1726522154000, 0.018204450607299805], + [1726523954000, 0.01820443570613861], + [1726524854000, 0.03640889376401901], + [1726526654000, 0.036408886313438416], + [1726528454000, 0.01820443570613861], + [1726529354000, 0.018204450607299805], + [1726530254000, 0.018204445019364357], + [1726531154000, 0.018204450607299805], + [1726532054000, 0.018204450607299805], + [1726532954000, 0.018204420804977417], + [1726533854000, 0.018204450607299805], + [1726545554000, 0.03640889376401901], + [1726546454000, 0.018204450607299805], + [1726547354000, 0.018204450607299805], + [1726549154000, 0.018204420804977417], + [1726550054000, 0.018204450607299805], + [1726550954000, 0.03640889748930931], + [1726551854000, 0.018204450607299805], + [1726585154000, 0.12768001854419708], + [1726586054000, 0.009475541301071644], + [1726586954000, 0.1187022402882576], + [1726587854000, 0.018204443156719208], + [1726588754000, 0.018702244386076927], + [1726589654000, 0.055111028254032135], + [1726590554000, 0.07331570237874985], + [1726591454000, 0.018204450607299805], + [1726592354000, 0.02792881429195404], + [1726593254000, 0.10972438007593155], + [1726594154000, 0.027929052710533142], + [1726595054000, 0.04613327980041504], + [1726595954000, 0.018204450607299805], + [1726596854000, 0.018204689025878906], + [1726597754000, 0.018204212188720703], + [1726598654000, 0.018204212188720703], + [1726599554000, 0.018204689025878906], + [1726600454000, 0.018204212188720703], + [1726601354000, 0.018204689025878906], + [1726602254000, 0.018204689025878906], + [1726603154000, 0.018204212188720703], + [1726604054000, 0.018204212188720703], + [1726604954000, 0.018204689025878906], + [1726605854000, 0.03640913963317871], + [1726606754000, 0.0182037353515625], + [1726607654000, 0.018204689025878906], + [1726608554000, 0.018204689025878906], + [1726609454000, 0.018204212188720703], + [1726610354000, 0.018204689025878906], + [1726612154000, 0.018204212188720703], + [1726613054000, 0.018204689025878906], + [1726613954000, 0.018204212188720703], + [1726614854000, 0.03640910983085632], + [1726616654000, 0.018204689025878906], + [1726617554000, 0.0182037353515625], + [1726618454000, 0.018204689025878906], + [1726619354000, 0.018204689025878906], + [1726620254000, 0.03640866279602051], + [1726631954000, 0.018204212188720703], + [1726632854000, 0.018204689025878906], + [1726633754000, 0.018204689025878906], + [1726635554000, 0.03640866279602051], + [1726636454000, 0.018204689025878906], + [1726638254000, 0.036408424377441406], + [1726671554000, 0.018204450607299805], + [1726672454000, 0.06408901512622833], + [1726673354000, 0.05511078983545303], + [1726674254000, 0.05511123687028885], + [1726675154000, 0.07331547886133194], + [1726676054000, 0.05511126667261124], + [1726676954000, 0.018204450607299805], + [1726677854000, 0.09151966124773026], + [1726678754000, 0.03690776973962784], + [1726679654000, 0.018204450607299805], + [1726680554000, 0.04613375663757324], + [1726681454000, 0.12792810797691345], + [1726682354000, 0.10922694206237793], + [1726683254000, 0.018204689025878906], + [1726684154000, 0.018204689025878906], + [1726685054000, 0.0182037353515625], + [1726685954000, 0.018204689025878906], + [1726686854000, 0.018204689025878906], + [1726687754000, 0.0182037353515625], + [1726689554000, 0.03640937805175781], + [1726690454000, 0.036408185958862305], + [1726691354000, 0.018205642700195312], + [1726693154000, 0.0182037353515625], + [1726694054000, 0.03640937805175781], + [1726694954000, 0.0182037353515625], + [1726696754000, 0.018204689025878906], + [1726697654000, 0.03640913963317871], + [1726698554000, 0.018204689025878906], + [1726699454000, 0.0182037353515625], + [1726700354000, 0.018204689025878906], + [1726701254000, 0.018204689025878906], + [1726703054000, 0.036409080028533936], + [1726703954000, 0.036408424377441406], + [1726705754000, 0.018204689025878906], + [1726706654000, 0.018204689025878906], + [1726718354000, 0.0182037353515625], + [1726719254000, 0.018204450607299805], + [1726720154000, 0.018205642700195312], + [1726721054000, 0.0182037353515625], + [1726721954000, 0.0182037353515625], + [1726722854000, 0.018205642700195312], + [1726723754000, 0.03640824556350708], + [1726725554000, 0.0182037353515625], + [1726757954000, 0.07306747138500214], + [1726758854000, 0.06408871710300446], + [1726759754000, 0.10049815475940704], + [1726760654000, 0.0004974365001544356], + [1726761554000, 0.03690753132104874], + [1726762454000, 0.05511031299829483], + [1726763354000, 0.09151969105005264], + [1726764254000, 0.01820439100265503], + [1726765154000, 0.0279272198677063], + [1726766054000, 0.10972438007593155], + [1726766954000, 0.027929961681365967], + [1726767854000, 0.04613381624221802], + [1726768754000, 0.05461311340332031], + [1726769654000, 0.018205642700195312], + [1726770554000, 0.018201828002929688], + [1726771454000, 0.03641003370285034], + [1726772354000, 0.018205642700195312], + [1726773254000, 0.018201828002929688], + [1726774154000, 0.018205642700195312], + [1726775054000, 0.018205642700195312], + [1726775954000, 0.0182037353515625], + [1726776854000, 0.0182037353515625], + [1726777754000, 0.018205642700195312], + [1726778654000, 0.0182037353515625], + [1726780454000, 0.018205642700195312], + [1726781354000, 0.0182037353515625], + [1726782254000, 0.0182037353515625], + [1726783154000, 0.018205642700195312], + [1726784054000, 0.036408185958862305], + [1726785854000, 0.018205642700195312], + [1726786754000, 0.036407470703125], + [1726788554000, 0.018205642700195312], + [1726789454000, 0.036408185958862305], + [1726790354000, 0.018205642700195312], + [1726791254000, 0.0182037353515625], + [1726792154000, 0.0182037353515625], + [1726804754000, 0.018205642700195312], + [1726805654000, 0.0182037353515625], + [1726806554000, 0.03641009330749512], + [1726807454000, 0.0182037353515625], + [1726808354000, 0.0182037353515625], + [1726809254000, 0.018205642700195312], + [1726811054000, 0.0182037353515625], + [1726811954000, 0.018204450607299805], + [1726813754000, 0.0182037353515625], + [1726844354000, 0.036660004407167435], + [1726845254000, 0.08229251205921173], + [1726846154000, 0.009476852603256702], + [1726847054000, 0.01820439100265503], + [1726847954000, 0.0369056835770607], + [1726848854000, 0.09151867777109146], + [1726849754000, 0.04613375663757324], + [1726850654000, 0.04613375663757324], + [1726851554000, 0.027930021286010742], + [1726852454000, 0.02792811393737793], + [1726853354000, 0.04613375663757324], + [1726854254000, 0.02792811393737793], + [1726855154000, 0.07281684875488281], + [1726856054000, 0.018205642700195312], + [1726856954000, 0.036408066749572754], + [1726857854000, 0.018205642700195312], + [1726858754000, 0.0182037353515625], + [1726859654000, 0.0182037353515625], + [1726860554000, 0.018205642700195312], + [1726861454000, 0.0182037353515625], + [1726863254000, 0.018205642700195312], + [1726864154000, 0.036407470703125], + [1726865054000, 0.018205642700195312], + [1726866854000, 0.0182037353515625], + [1726867754000, 0.0182037353515625]], + 'Gc': [[1726276454000, 0.10000000149011612], + [1726281854000, 0.10000000149011612], + [1726317854000, 0.10000000149011612], + [1726366454000, 0.10000000149011612], + [1726371854000, 0.10000000149011612], + [1726451054000, 0.10000000149011612], + [1726456454000, 0.10000000149011612], + [1726495154000, 0.10000000149011612], + [1726510454000, 0.10000000149011612], + [1726539254000, 0.10000000149011612], + [1726543754000, 0.10000000149011612], + [1726624754000, 0.10000000149011612], + [1726630154000, 0.10000000149011612], + [1726710254000, 0.10000000149011612], + [1726715654000, 0.10000000149011612], + [1726794854000, 0.10000000149011612], + [1726800254000, 0.10000000149011612], + [1726822754000, 0.0905250534415245]], + 'Pb': [[1726294454000, 0.07281494140625], [1726295354000, 0.1820526123046875], + [1726296254000, 0.20000000298023224], + [1726297154000, 0.3276824951171875], + [1726298054000, 0.20000000298023224], [1726298954000, 0.34588623046875], + [1726299854000, 0.382293701171875], [1726300754000, 0.4004974365234375], + [1726301654000, 0.418701171875], [1726302554000, 0.4004974365234375], + [1726303454000, 0.418701171875], [1726304354000, 0.4004974365234375], + [1726305254000, 0.418701171875], [1726306154000, 0.4004974365234375], + [1726307054000, 0.4187164306640625], + [1726307954000, 0.4004974365234375], + [1726308854000, 0.3458709716796875], [1726309754000, 0.309478759765625], + [1726310654000, 0.3640899658203125], + [1726311554000, 0.2184600830078125], [1726312454000, 0.1456298828125], + [1726313354000, 0.1638336181640625], + [1726314254000, 0.1820526123046875], + [1726315154000, 0.2912750244140625], [1726316054000, 0.182037353515625], + [1726316954000, 0.20025634765625], [1726317854000, 0.291259765625], + [1726318754000, 0.091033935546875], [1726319654000, 0.0182037353515625], + [1726325054000, 0.0182037353515625], [1726380854000, 0.07281494140625], + [1726381754000, 0.1638336181640625], + [1726382654000, 0.20000000298023224], + [1726383554000, 0.2912750244140625], + [1726384454000, 0.3640899658203125], + [1726385354000, 0.3640899658203125], + [1726386254000, 0.2366485595703125], + [1726387154000, 0.30000001192092896], + [1726388054000, 0.4004974365234375], [1726388954000, 0.418701171875], + [1726389854000, 0.4004974365234375], [1726390754000, 0.418701171875], + [1726391654000, 0.4004974365234375], + [1726392554000, 0.2184600830078125], + [1726393454000, 0.1638336181640625], + [1726394354000, 0.4004974365234375], [1726395254000, 0.34588623046875], + [1726396154000, 0.309478759765625], [1726397054000, 0.382293701171875], + [1726397954000, 0.382293701171875], [1726398854000, 0.3276824951171875], + [1726399754000, 0.418701171875], [1726400654000, 0.3640899658203125], + [1726401554000, 0.3094635009765625], + [1726402454000, 0.0364227294921875], + [1726403354000, 0.0182037353515625], + [1726404254000, 0.0182037353515625], + [1726470854000, 0.0182037353515625], + [1726472654000, 0.0910186767578125], + [1726473554000, 0.1820526123046875], + [1726474454000, 0.4004974365234375], + [1726475354000, 0.4004974365234375], [1726476254000, 0.400482177734375], + [1726477154000, 0.4187164306640625], + [1726478054000, 0.4004974365234375], + [1726478954000, 0.4004974365234375], [1726479854000, 0.418701171875], + [1726480754000, 0.4004974365234375], [1726481654000, 0.418701171875], + [1726482554000, 0.3276824951171875], + [1726483454000, 0.4004974365234375], [1726484354000, 0.418701171875], + [1726485254000, 0.327667236328125], [1726486154000, 0.418701171875], + [1726487054000, 0.34588623046875], [1726487954000, 0.4004974365234375], + [1726488854000, 0.2730712890625], [1726489754000, 0.4004974365234375], + [1726490654000, 0.3640899658203125], [1726491554000, 0.382293701171875], + [1726492454000, 0.2002410888671875], + [1726493354000, 0.1092376708984375], + [1726494254000, 0.0182037353515625], + [1726497854000, 0.0182037353515625], + [1726501454000, 0.0182037353515625], + [1726553654000, 0.10000000149011612], + [1726554554000, 0.20000000298023224], + [1726555454000, 0.2730666995048523], + [1726556354000, 0.30947554111480713], + [1726557254000, 0.21845322847366333], + [1726558154000, 0.018204569816589355], + [1726559054000, 0.018204450607299805], + [1726567154000, 0.018204450607299805], + [1726574354000, 0.018204450607299805], + [1726576154000, 0.018204331398010254], + [1726578854000, 0.018204450607299805], + [1726580654000, 0.018204450607299805], + [1726583354000, 0.018204569816589355], + [1726640954000, 0.09102225303649902], + [1726642754000, 0.018204450607299805], + [1726644554000, 0.07281768321990967], + [1726645454000, 0.09102225303649902], + [1726646354000, 0.2184532880783081], + [1726647254000, 0.30000001192092896], + [1726648154000, 0.4004976749420166], + [1726649054000, 0.4004979133605957], + [1726649954000, 0.4004979133605957], + [1726650854000, 0.3822929859161377], + [1726651754000, 0.4004983901977539], + [1726652654000, 0.4004974365234375], + [1726653554000, 0.4187021255493164], + [1726654454000, 0.4004979133605957], + [1726655354000, 0.4187021255493164], + [1726656254000, 0.4004974365234375], + [1726657154000, 0.4187021255493164], + [1726658054000, 0.4004983901977539], + [1726658954000, 0.4187021255493164], + [1726659854000, 0.4004974365234375], + [1726660754000, 0.4004974365234375], + [1726661654000, 0.4004983901977539], + [1726662554000, 0.3640890121459961], + [1726663454000, 0.3458843231201172], + [1726664354000, 0.07281780242919922], + [1726666154000, 0.018204689025878906], + [1726728254000, 0.018204689025878906], + [1726730054000, 0.05461311340332031], + [1726730954000, 0.05461311340332031], + [1726731854000, 0.10000000149011612], + [1726732754000, 0.16384029388427734], + [1726733654000, 0.20000000298023224], + [1726734554000, 0.3276796340942383], + [1726735454000, 0.3276796340942383], + [1726736354000, 0.3276805877685547], + [1726737254000, 0.3458833694458008], [1726738154000, 0.382293701171875], + [1726739054000, 0.4004974365234375], + [1726739954000, 0.4187021255493164], + [1726740854000, 0.4004983901977539], + [1726741754000, 0.4187021255493164], + [1726742654000, 0.4004974365234375], + [1726743554000, 0.4187021255493164], + [1726744454000, 0.4004983901977539], + [1726745354000, 0.4004974365234375], [1726746254000, 0.382293701171875], + [1726747154000, 0.4187021255493164], [1726748054000, 0.382293701171875], + [1726748954000, 0.382293701171875], [1726749854000, 0.3276786804199219], + [1726750754000, 0.3094749450683594], + [1726751654000, 0.2912712097167969], + [1726752554000, 0.14563751220703125], + [1726753454000, 0.018201828002929688], + [1726754354000, 0.018205642700195312], + [1726814654000, 0.09102249145507812], + [1726815554000, 0.10000000149011612], + [1726816454000, 0.18204498291015625], + [1726817354000, 0.23665618896484375], + [1726818254000, 0.2912712097167969], + [1726819154000, 0.30000001192092896], + [1726820054000, 0.2912712097167969], + [1726820954000, 0.2912712097167969], + [1726821854000, 0.2912712097167969], + [1726822754000, 0.30000001192092896], + [1726823654000, 0.2730674743652344], + [1726824554000, 0.14563560485839844], + [1726825454000, 0.10000000149011612], + [1726826354000, 0.05461311340332031], + [1726827254000, 0.25486183166503906], + [1726828154000, 0.2548637390136719], + [1726829054000, 0.20000000298023224], + [1726829954000, 0.14563560485839844], + [1726830854000, 0.10000000149011612], + [1726831754000, 0.09102249145507812], + [1726832654000, 0.10000000149011612], + [1726833554000, 0.14563560485839844], + [1726834454000, 0.14563560485839844], + [1726835354000, 0.20024871826171875], + [1726836254000, 0.382293701171875], + [1726837154000, 0.23665809631347656], + [1726838054000, 0.18204498291015625], + [1726838954000, 0.25486183166503906], + [1726839854000, 0.23665809631347656], + [1726840754000, 0.20024871826171875], + [1726841654000, 0.18204307556152344], + [1726842554000, 0.18204498291015625], + [1726843454000, 0.18204498291015625], + [1726844354000, 0.0182037353515625]], + 'Pc': [[1726294454000, 0.02718505822122097], + [1726295354000, 0.01794738695025444], + [1726296254000, 0.01796264573931694], + [1726297154000, 0.07231750339269638], + [1726298054000, 0.01796264573931694], + [1726298954000, 0.05411376804113388], + [1726299854000, 0.117706298828125], [1726300754000, 0.0995025634765625], + [1726301654000, 0.081298828125], [1726302554000, 0.03591003268957138], + [1726303454000, 0.081298828125], [1726304354000, 0.0995025634765625], + [1726305254000, 0.07231750339269638], + [1726306154000, 0.0995025634765625], + [1726307054000, 0.0812835693359375], + [1726307954000, 0.0995025634765625], + [1726308854000, 0.05412902683019638], + [1726309754000, 0.09052123874425888], + [1726310654000, 0.03591003268957138], + [1726311554000, 0.18153992295265198], + [1726312454000, 0.05437011644244194], + [1726313354000, 0.03616638109087944], + [1726314254000, 0.01794738695025444], + [1726315154000, 0.008724975399672985], + [1726316054000, 0.11796264350414276], + [1726316954000, 0.01794738695025444], + [1726317854000, 0.10874023288488388], + [1726318754000, 0.00896606408059597], + [1726319654000, 0.10000000149011612], + [1726320554000, 0.10000000149011612], + [1726321454000, 1.8118839761882555e-13], + [1726322354000, 0.20000000298023224], + [1726323254000, 1.829647544582258e-13], + [1726324154000, 0.10000000149011612], + [1726325954000, 5.453415496958769e-13], + [1726380854000, 0.02718505822122097], + [1726381754000, 0.03616638109087944], + [1726383554000, 0.008724975399672985], + [1726384454000, 0.03591003268957138], + [1726385354000, 0.03591003268957138], + [1726386254000, 0.06335143744945526], + [1726387154000, 0.02692871168255806], + [1726388054000, 0.01770629920065403], [1726388954000, 0.081298828125], + [1726389854000, 0.01770629920065403], [1726390754000, 0.081298828125], + [1726391654000, 0.0995025634765625], + [1726392554000, 0.08153991401195526], + [1726393454000, 0.03616638109087944], + [1726394354000, 0.0995025634765625], [1726395254000, 0.15411376953125], + [1726396154000, 0.02692871168255806], + [1726397054000, 0.117706298828125], + [1726397954000, 0.01770629920065403], + [1726398854000, 0.1723175048828125], + [1726399754000, 0.03616638109087944], + [1726400654000, 0.03591003268957138], + [1726401554000, 0.09053649753332138], + [1726402454000, 0.16357727348804474], + [1726403354000, 0.08179626613855362], + [1726404254000, 0.08179626613855362], + [1726405154000, 0.10000000149011612], + [1726406054000, 1.8118839761882555e-13], + [1726406954000, 0.10000000149011612], + [1726407854000, 0.10000000149011612], + [1726408754000, 0.10000000149011612], + [1726409654000, 0.10000000149011612], + [1726410554000, 0.10000000149011612], + [1726411454000, 0.10000000149011612], + [1726419554000, 5.471179065352771e-13], + [1726470854000, 0.08179626613855362], + [1726472654000, 0.00898132286965847], + [1726473554000, 0.01794738695025444], + [1726474454000, 0.0995025634765625], + [1726476254000, 0.03592529147863388], + [1726477154000, 0.0812835693359375], + [1726478054000, 0.0995025634765625], + [1726478954000, 0.0995025634765625], [1726479854000, 0.081298828125], + [1726480754000, 0.19950255751609802], + [1726481654000, 0.01770629920065403], + [1726482554000, 0.272317498922348], [1726483454000, 0.0995025634765625], + [1726484354000, 0.081298828125], [1726485254000, 0.07233276218175888], + [1726486154000, 0.081298828125], [1726487054000, 0.15411376953125], + [1726487954000, 0.19950255751609802], + [1726488854000, 0.12692871689796448], + [1726489754000, 0.0995025634765625], + [1726490654000, 0.03591003268957138], + [1726491554000, 0.117706298828125], + [1726492454000, 0.19975891709327698], + [1726494254000, 0.08179626613855362], + [1726495154000, 0.10000000149011612], + [1726496054000, 7.265299473147024e-13], + [1726496954000, 0.10000000149011612], + [1726497854000, 0.08179626613855362], + [1726498754000, 0.10000000149011612], + [1726499654000, 1.8118839761882555e-13], + [1726500554000, 0.10000000149011612], + [1726501454000, 5.453415496958769e-13], + [1726502354000, 0.10000000149011612], + [1726504154000, 0.10000000149011612], + [1726508654000, 0.10000000149011612], + [1726553654000, 0.008977776393294334], + [1726554554000, 0.017955545336008072], + [1726555454000, 0.026933301240205765], + [1726556354000, 0.09052445739507675], + [1726558154000, 0.08179543167352676], + [1726559054000, 1.8185453143360064e-13], + [1726559954000, 0.10000000149011612], + [1726560854000, 0.10000000149011612], + [1726561754000, 3.6415315207705135e-13], + [1726562654000, 5.46229728115577e-13], + [1726563554000, 0.10000000149011612], + [1726564454000, 1.8207657603852567e-13], + [1726565354000, 0.10000000149011612], + [1726567154000, 0.08179555088281631], + [1726568054000, 0.10000000149011612], + [1726568954000, 5.471179065352771e-13], + [1726569854000, 0.10000000149011612], + [1726571654000, 0.10000000149011612], + [1726572554000, 0.10000000149011612], + [1726573454000, 3.6415315207705135e-13], + [1726574354000, 0.08179555088281631], + [1726575254000, 0.10000000149011612], + [1726576154000, 0.08179567009210587], + [1726577054000, 0.20000000298023224], + [1726577954000, 0.10000000149011612], + [1726578854000, 0.08179555088281631], + [1726579754000, 0.10000000149011612], + [1726580654000, 0.08179555088281631], + [1726581554000, 0.10000000149011612], + [1726582454000, 0.10000000149011612], + [1726583354000, 0.08179543167352676], + [1726584254000, 0.10000000149011612], + [1726585154000, 1.8118839761882555e-13], + [1726640954000, 0.10897774994373322], + [1726642754000, 0.08179555088281631], + [1726644554000, 0.027182316407561302], + [1726645454000, 0.008977746590971947], + [1726646354000, 0.08154670894145966], + [1726647254000, 0.02693324163556099], + [1726648154000, 0.19950231909751892], + [1726649954000, 0.017706776037812233], + [1726650854000, 0.017707014456391335], + [1726651754000, 0.0995016098022461], + [1726652654000, 0.03591146320104599], + [1726653554000, 0.0995025634765625], + [1726654454000, 0.0995020866394043], + [1726655354000, 0.0812978744506836], + [1726656254000, 0.03591098636388779], + [1726657154000, 0.0812978744506836], + [1726658054000, 0.0995016098022461], + [1726658954000, 0.0812978744506836], + [1726659854000, 0.0995025634765625], + [1726660754000, 0.0995025634765625], + [1726661654000, 0.0995016098022461], + [1726662554000, 0.1359109878540039], + [1726663454000, 0.05411567538976669], + [1726664354000, 0.02718219719827175], + [1726665254000, 0.10000000149011612], + [1726666154000, 0.08179531246423721], + [1726667054000, 0.10000000149011612], + [1726667954000, 0.10000000149011612], + [1726668854000, 0.10000000149011612], + [1726669754000, 0.20000000298023224], + [1726670654000, 1.8118839761882555e-13], + [1726672454000, 0.10000000149011612], + [1726728254000, 0.08179531246423721], + [1726730054000, 0.04538688808679581], + [1726730954000, 0.04538688808679581], + [1726731854000, 0.008977508172392845], + [1726732754000, 0.0361597053706646], + [1726733654000, 0.01795501634478569], + [1726734554000, 0.04538688808679581], + [1726735454000, 0.0723203644156456], + [1726736354000, 0.00872879009693861], + [1726737254000, 0.0541166290640831], + [1726738154000, 0.05411472171545029], + [1726739054000, 0.0995025634765625], + [1726739954000, 0.0812978744506836], + [1726740854000, 0.05411472171545029], + [1726741754000, 0.017707252874970436], + [1726742654000, 0.0995025634765625], + [1726743554000, 0.01770629920065403], + [1726744454000, 0.0995016098022461], + [1726745354000, 0.0995025634765625], [1726746254000, 0.117706298828125], + [1726747154000, 0.0812978744506836], [1726748054000, 0.117706298828125], + [1726748954000, 0.01770629920065403], + [1726749854000, 0.17232131958007812], + [1726750754000, 0.0905250534415245], + [1726751654000, 0.00872879009693861], + [1726752554000, 0.1543624848127365], + [1726753454000, 0.08179817348718643], + [1726754354000, 0.18179436028003693], + [1726755254000, 1.8118839761882555e-13], + [1726756154000, 0.10000000149011612], + [1726757054000, 1.8118839761882555e-13], + [1726757954000, 1.829647544582258e-13], + [1726758854000, 5.453415496958769e-13], + [1726759754000, 5.453415496958769e-13], + [1726814654000, 0.10897751152515411], + [1726815554000, 0.008977508172392845], + [1726816454000, 0.01795501634478569], + [1726817354000, 0.06334380805492401], + [1726818254000, 0.00872879009693861], + [1726819154000, 0.008726882748305798], + [1726820054000, 0.108728788793087], + [1726820954000, 0.00872879009693861], + [1726821854000, 0.00872879009693861], + [1726822754000, 0.008726882748305798], + [1726823654000, 0.026932526379823685], + [1726824554000, 0.0543643943965435], + [1726825454000, 0.008977508172392845], + [1726826354000, 0.04538688808679581], + [1726827254000, 0.045138169080019], + [1726828154000, 0.045136261731386185], + [1726829054000, 0.017956923693418503], + [1726829954000, 0.0543643943965435], + [1726830854000, 0.008977508172392845], + [1726831754000, 0.008977508172392845], + [1726832654000, 0.008977508172392845], + [1726833554000, 0.0543643943965435], + [1726834454000, 0.0543643943965435], + [1726835354000, 0.09975127875804901], + [1726836254000, 0.01770629920065403], + [1726837154000, 0.0633419007062912], + [1726838054000, 0.11795501410961151], + [1726838954000, 0.045138169080019], [1726839854000, 0.0633419007062912], + [1726840754000, 0.09975127875804901], + [1726841654000, 0.017956923693418503], + [1726842554000, 0.11795501410961151], + [1726843454000, 0.11795501410961151]], + 'Pg': [[1726302554000, 0.0995025634765625], + [1726303454000, 0.10000000149011612], + [1726304354000, 0.10000000149011612], + [1726305254000, 0.18129882216453552], + [1726306154000, 0.19950255751609802], + [1726307054000, 0.10000000149011612], + [1726307954000, 0.20000000298023224], + [1726308854000, 0.10000000149011612], + [1726309754000, 0.10000000149011612], + [1726310654000, 0.20000000298023224], + [1726315154000, 0.10000000149011612], + [1726316954000, 0.09974364936351776], + [1726318754000, 0.4000000059604645], + [1726319654000, 0.28179627656936646], + [1726320554000, 0.4000000059604645], + [1726321454000, 0.20000000298023224], + [1726322354000, 0.20000000298023224], + [1726323254000, 0.20000000298023224], + [1726324154000, 0.30000001192092896], + [1726325054000, 0.28179627656936646], + [1726325954000, 0.20000000298023224], + [1726326854000, 0.20000000298023224], + [1726327754000, 0.20000000298023224], + [1726328654000, 0.10000000149011612], + [1726329554000, 0.20000000298023224], + [1726330454000, 0.10000000149011612], + [1726332254000, 0.10000000149011612], + [1726335854000, 0.10000000149011612], + [1726388054000, 0.0995025634765625], + [1726389854000, 0.0995025634765625], + [1726390754000, 0.10000000149011612], + [1726391654000, 0.10000000149011612], + [1726392554000, 0.10000000149011612], + [1726394354000, 0.20000000298023224], + [1726395254000, 0.10000000149011612], + [1726396154000, 0.09052123874425888], [1726399754000, 0.081298828125], + [1726401554000, 0.10000000149011612], + [1726402454000, 0.30000001192092896], + [1726403354000, 0.30000001192092896], + [1726404254000, 0.20000000298023224], + [1726405154000, 0.20000000298023224], + [1726406054000, 0.20000000298023224], + [1726406954000, 0.20000000298023224], + [1726407854000, 0.10000000149011612], + [1726408754000, 0.10000000149011612], + [1726412354000, 0.10000000149011612], + [1726413254000, 0.10000000149011612], + [1726414154000, 0.10000000149011612], + [1726415054000, 0.10000000149011612], + [1726416854000, 0.10000000149011612], + [1726417754000, 0.10000000149011612], + [1726419554000, 0.10000000149011612], + [1726421354000, 0.10000000149011612], + [1726474454000, 0.10000000149011612], + [1726475354000, 0.0995025634765625], [1726476254000, 0.099517822265625], + [1726477154000, 0.10000000149011612], + [1726478054000, 0.10000000149011612], + [1726478954000, 0.10000000149011612], + [1726479854000, 0.10000000149011612], + [1726480754000, 0.10000000149011612], + [1726481654000, 0.18129882216453552], + [1726483454000, 0.10000000149011612], + [1726484354000, 0.10000000149011612], + [1726485254000, 0.10000000149011612], + [1726486154000, 0.10000000149011612], + [1726487054000, 0.10000000149011612], + [1726488854000, 0.10000000149011612], + [1726493354000, 0.19076232612133026], + [1726494254000, 0.28179627656936646], + [1726495154000, 0.10000000149011612], + [1726496054000, 0.30000001192092896], + [1726496954000, 0.20000000298023224], + [1726497854000, 0.18179626762866974], + [1726498754000, 0.20000000298023224], + [1726499654000, 0.20000000298023224], + [1726500554000, 0.10000000149011612], + [1726501454000, 0.08179626613855362], + [1726503254000, 0.10000000149011612], + [1726557254000, 0.08154676854610443], + [1726558154000, 0.4000000059604645], + [1726559054000, 0.3817955553531647], [1726559954000, 0.5], + [1726560854000, 0.5], [1726561754000, 0.5], + [1726562654000, 0.6000000238418579], [1726563554000, 0.5], + [1726564454000, 0.6000000238418579], + [1726565354000, 0.6000000238418579], + [1726566254000, 0.6000000238418579], + [1726567154000, 0.5817955732345581], + [1726568054000, 0.6000000238418579], + [1726568954000, 0.6000000238418579], [1726569854000, 0.5], + [1726570754000, 0.6000000238418579], [1726571654000, 0.5], + [1726572554000, 0.5], [1726573454000, 0.5], + [1726574354000, 0.4817955493927002], [1726575254000, 0.5], + [1726576154000, 0.3817956745624542], + [1726577054000, 0.30000001192092896], + [1726577954000, 0.4000000059604645], + [1726578854000, 0.30000001192092896], + [1726579754000, 0.30000001192092896], + [1726580654000, 0.20000000298023224], + [1726581554000, 0.30000001192092896], + [1726582454000, 0.20000000298023224], + [1726583354000, 0.18179543316364288], + [1726584254000, 0.20000000298023224], + [1726585154000, 0.20000000298023224], + [1726586054000, 0.20000000298023224], + [1726586954000, 0.20000000298023224], + [1726587854000, 0.10000000149011612], + [1726588754000, 0.10000000149011612], + [1726589654000, 0.10000000149011612], + [1726590554000, 0.10000000149011612], + [1726593254000, 0.10000000149011612], + [1726649054000, 0.0995020866394043], + [1726649954000, 0.0995020866394043], + [1726650854000, 0.10000000149011612], + [1726651754000, 0.10000000149011612], + [1726652654000, 0.19950255751609802], + [1726653554000, 0.18129786849021912], + [1726654454000, 0.10000000149011612], + [1726655354000, 0.10000000149011612], + [1726656254000, 0.0995025634765625], + [1726657154000, 0.10000000149011612], + [1726664354000, 0.30000001192092896], + [1726665254000, 0.30000001192092896], + [1726666154000, 0.20000000298023224], + [1726667054000, 0.20000000298023224], + [1726667954000, 0.30000001192092896], + [1726668854000, 0.20000000298023224], + [1726669754000, 0.10000000149011612], + [1726670654000, 0.20000000298023224], + [1726671554000, 0.20000000298023224], + [1726672454000, 0.20000000298023224], + [1726673354000, 0.10000000149011612], + [1726674254000, 0.10000000149011612], + [1726675154000, 0.10000000149011612], + [1726676054000, 0.10000000149011612], + [1726677854000, 0.10000000149011612], + [1726681454000, 0.10000000149011612], + [1726734554000, 0.0723203644156456], + [1726736354000, 0.0723194107413292], [1726738154000, 0.117706298828125], + [1726739054000, 0.10000000149011612], + [1726739954000, 0.10000000149011612], + [1726740854000, 0.19950160384178162], + [1726741754000, 0.0812978744506836], + [1726742654000, 0.10000000149011612], + [1726743554000, 0.0812978744506836], + [1726752554000, 0.10000000149011612], + [1726753454000, 0.28179818391799927], + [1726754354000, 0.10000000149011612], + [1726755254000, 0.20000000298023224], + [1726756154000, 0.20000000298023224], + [1726757054000, 0.20000000298023224], + [1726757954000, 0.20000000298023224], + [1726758854000, 0.20000000298023224], + [1726759754000, 0.20000000298023224], + [1726760654000, 0.10000000149011612], + [1726761554000, 0.10000000149011612], + [1726762454000, 0.10000000149011612], + [1726763354000, 0.10000000149011612], + [1726766054000, 0.10000000149011612], + [1726836254000, 0.10000000149011612], + [1726844354000, 0.18179626762866974], + [1726845254000, 0.20000000298023224], + [1726846154000, 0.10000000149011612], + [1726847054000, 0.10000000149011612], + [1726847954000, 0.10000000149011612], + [1726848854000, 0.10000000149011612]], + 'Gb': [[1726317854000, 0.00922241248190403], + [1726822754000, 0.00947494525462389]], + 'Bg': [[1726325954000, 0.20000000298023224], + [1726326854000, 0.30000001192092896], + [1726327754000, 0.30000001192092896], + [1726328654000, 0.3640899658203125], + [1726329554000, 0.30000001192092896], + [1726330454000, 0.4000000059604645], [1726331354000, 0.455108642578125], + [1726332254000, 0.4000000059604645], [1726333154000, 0.49151611328125], + [1726334054000, 0.5], [1726334954000, 0.49151611328125], + [1726335854000, 0.4000000059604645], [1726336754000, 0.07281494140625], + [1726412354000, 0.34588623046875], [1726413254000, 0.4000000059604645], + [1726414154000, 0.4000000059604645], + [1726415054000, 0.4000000059604645], [1726415954000, 0.455108642578125], + [1726416854000, 0.4000000059604645], + [1726417754000, 0.4000000059604645], [1726418654000, 0.47332763671875], + [1726419554000, 0.4000000059604645], + [1726420454000, 0.4733123779296875], + [1726421354000, 0.4000000059604645], [1726422254000, 0.5], + [1726585154000, 0.20000000298023224], + [1726586054000, 0.30000001192092896], + [1726586954000, 0.30000001192092896], + [1726587854000, 0.36408889293670654], + [1726588754000, 0.4000000059604645], + [1726589654000, 0.4000000059604645], + [1726590554000, 0.4000000059604645], + [1726591454000, 0.4915199279785156], [1726592354000, 0.5], + [1726593254000, 0.4000000059604645], [1726594154000, 0.5], + [1726595054000, 0.5], [1726595954000, 0.07281780242919922], + [1726671554000, 0.27306699752807617], + [1726672454000, 0.30000001192092896], + [1726673354000, 0.4000000059604645], + [1726674254000, 0.4000000059604645], + [1726675154000, 0.4000000059604645], + [1726676054000, 0.4000000059604645], + [1726676954000, 0.4551105499267578], + [1726677854000, 0.4000000059604645], + [1726678754000, 0.49152088165283203], + [1726679654000, 0.4915199279785156], [1726680554000, 0.5], + [1726681454000, 0.4000000059604645], + [1726757954000, 0.20000000298023224], + [1726758854000, 0.30000001192092896], + [1726759754000, 0.30000001192092896], + [1726760654000, 0.4000000059604645], + [1726761554000, 0.4000000059604645], + [1726762454000, 0.4000000059604645], + [1726763354000, 0.4000000059604645], + [1726764254000, 0.49152088165283203], [1726765154000, 0.5], + [1726766054000, 0.4000000059604645], [1726766954000, 0.5], + [1726767854000, 0.5], [1726779554000, 0.0182037353515625], + [1726844354000, 0.21820373833179474], + [1726845254000, 0.30000001192092896], + [1726846154000, 0.3822917938232422], + [1726847054000, 0.3822956085205078], + [1726847954000, 0.4000000059604645], + [1726848854000, 0.4000000059604645], [1726849754000, 0.5], + [1726850654000, 0.5], [1726851554000, 0.5], [1726852454000, 0.5], + [1726853354000, 0.5], [1726854254000, 0.5]], + 'kwh': [[1726263854000, 0.0181884765625], [1726264754000, 0.018218994140625], + [1726265654000, 0.0182037353515625], + [1726266554000, 0.036408424377441406], + [1726268354000, 0.0182037353515625], + [1726269254000, 0.0182037353515625], + [1726270154000, 0.0182037353515625], + [1726271954000, 0.036408424377441406], + [1726272854000, 0.0182037353515625], + [1726273754000, 0.0182037353515625], + [1726274654000, 0.0182037353515625], + [1726276454000, 0.10000000149011612], + [1726281854000, 0.10000000149011612], + [1726286354000, 0.0182037353515625], + [1726287254000, 0.018204212188720703], + [1726288154000, 0.0182037353515625], + [1726289054000, 0.0182037353515625], + [1726289954000, 0.0182037353515625], + [1726290854000, 0.0182037353515625], + [1726292654000, 0.0182037353515625], + [1726294454000, 0.09999999962747097], + [1726295354000, 0.19999999925494194], + [1726296254000, 0.21796264871954918], + [1726297154000, 0.3999999985098839], + [1726298054000, 0.21796264871954918], + [1726298954000, 0.3999999985098839], [1726299854000, 0.5], + [1726300754000, 0.5], [1726301654000, 0.5], + [1726302554000, 0.5359100326895714], + [1726303454000, 0.6000000014901161], + [1726304354000, 0.6000000014901161], + [1726305254000, 0.6723174974322319], + [1726306154000, 0.699502557516098], + [1726307054000, 0.6000000014901161], + [1726307954000, 0.7000000029802322], [1726308854000, 0.5], + [1726309754000, 0.5], [1726310654000, 0.6000000014901161], + [1726311554000, 0.4000000059604645], + [1726312454000, 0.19999999925494194], + [1726313354000, 0.19999999925494194], + [1726314254000, 0.19999999925494194], + [1726315154000, 0.4000000013038516], + [1726316054000, 0.29999999701976776], + [1726316954000, 0.3179473839700222], + [1726317854000, 0.509222412481904], + [1726318754000, 0.5000000055879354], + [1726319654000, 0.4000000134110451], + [1726320554000, 0.5000000074505806], + [1726321454000, 0.20000000298041343], + [1726322354000, 0.4000000059604645], + [1726323254000, 0.2000000029804152], + [1726324154000, 0.4000000134110451], + [1726325054000, 0.31820422410964966], + [1726325954000, 0.4548675604170054], + [1726326854000, 0.5822946727275848], + [1726327754000, 0.5094787748530507], + [1726328654000, 0.4822946563363075], + [1726329554000, 0.6004979312419891], + [1726330454000, 0.5187011789530516], + [1726331354000, 0.4733128547668457], + [1726332254000, 0.6097208112478256], + [1726333154000, 0.5097203254699707], + [1726334054000, 0.5279397964477539], + [1726334954000, 0.5097208023071289], + [1726335854000, 0.6461273208260536], + [1726336754000, 0.0910196304321289], + [1726337654000, 0.0182037353515625], + [1726338554000, 0.0182037353515625], + [1726339454000, 0.018218994140625], + [1726340354000, 0.0182037353515625], + [1726342154000, 0.036407470703125], + [1726343954000, 0.0182037353515625], + [1726344854000, 0.0182037353515625], + [1726345754000, 0.0182037353515625], + [1726346654000, 0.036408424377441406], + [1726347554000, 0.0182037353515625], + [1726348454000, 0.0182037353515625], + [1726349354000, 0.0182037353515625], + [1726351154000, 0.0182037353515625], + [1726352054000, 0.036407470703125], + [1726352954000, 0.018204689025878906], + [1726353854000, 0.0182037353515625], + [1726354754000, 0.0182037353515625], + [1726356554000, 0.0182037353515625], + [1726357454000, 0.0182037353515625], + [1726358354000, 0.0364079475402832], + [1726360154000, 0.0182037353515625], + [1726361054000, 0.0182037353515625], + [1726366454000, 0.10000000149011612], + [1726371854000, 0.10000000149011612], + [1726372754000, 0.018218994140625], + [1726373654000, 0.0364079475402832], + [1726374554000, 0.0182037353515625], + [1726376354000, 0.0182037353515625], + [1726377254000, 0.0182037353515625], + [1726378154000, 0.036408424377441406], + [1726379054000, 0.0182037353515625], + [1726380854000, 0.09999999962747097], + [1726381754000, 0.19999999925494194], + [1726382654000, 0.20000000298023224], + [1726383554000, 0.2999999998137355], + [1726384454000, 0.3999999985098839], + [1726385354000, 0.3999999985098839], + [1726386254000, 0.29999999701976776], + [1726387154000, 0.326928723603487], [1726388054000, 0.517706299200654], + [1726388954000, 0.5], [1726389854000, 0.517706299200654], + [1726390754000, 0.6000000014901161], + [1726391654000, 0.6000000014901161], + [1726392554000, 0.3999999985098839], + [1726393454000, 0.19999999925494194], + [1726394354000, 0.7000000029802322], + [1726395254000, 0.6000000014901161], + [1726396154000, 0.42692871019244194], [1726397054000, 0.5], + [1726397954000, 0.40000000037252903], [1726398854000, 0.5], + [1726399754000, 0.5361663810908794], + [1726400654000, 0.3999999985098839], [1726401554000, 0.5], + [1726402454000, 0.5000000149011612], + [1726403354000, 0.4000000134110451], + [1726404254000, 0.30000000447034836], + [1726405154000, 0.30000000447034836], + [1726406054000, 0.20000000298041343], + [1726406954000, 0.30000000447034836], + [1726407854000, 0.20000000298023224], + [1726408754000, 0.20000000298023224], + [1726409654000, 0.10000000149011612], + [1726410554000, 0.11820373684167862], + [1726411454000, 0.10000000149011612], + [1726412354000, 0.4640904441475868], + [1726413254000, 0.500497443950735], + [1726414154000, 0.5551096051931381], + [1726415054000, 0.5733128637075424], + [1726415954000, 0.4733133316040039], + [1726416854000, 0.5733128637075424], + [1726417754000, 0.5551096051931381], + [1726418654000, 0.4915323257446289], + [1726419554000, 0.5915161222224938], + [1726420454000, 0.5284210219979286], + [1726421354000, 0.6279254928231239], + [1726422254000, 0.5461430549621582], [1726423154000, 0.07281494140625], + [1726424054000, 0.0182037353515625], + [1726424954000, 0.0182037353515625], + [1726425854000, 0.0182037353515625], + [1726426754000, 0.0182037353515625], + [1726427654000, 0.0182037353515625], + [1726428554000, 0.0182037353515625], + [1726429454000, 0.0182037353515625], + [1726430354000, 0.0364079475402832], + [1726432154000, 0.0182037353515625], + [1726433054000, 0.0182037353515625], + [1726433954000, 0.0182037353515625], + [1726434854000, 0.0182037353515625], + [1726435754000, 0.0182037353515625], + [1726436654000, 0.0182037353515625], + [1726437554000, 0.0182037353515625], + [1726438454000, 0.0182037353515625], + [1726439354000, 0.0182037353515625], + [1726440254000, 0.018204689025878906], + [1726441154000, 0.0182037353515625], + [1726442054000, 0.0182037353515625], + [1726442954000, 0.018218994140625], + [1726443854000, 0.0182037353515625], + [1726444754000, 0.018204689025878906], + [1726445654000, 0.0182037353515625], + [1726446554000, 0.0182037353515625], + [1726448354000, 0.0182037353515625], + [1726451054000, 0.10000000149011612], + [1726456454000, 0.10000000149011612], + [1726459154000, 0.0182037353515625], + [1726460954000, 0.0364079475402832], + [1726461854000, 0.0182037353515625], + [1726463654000, 0.036407470703125], + [1726464554000, 0.0182037353515625], + [1726466354000, 0.0182037353515625], + [1726468154000, 0.0182037353515625], + [1726470854000, 0.11820469051599503], + [1726472654000, 0.09999999962747097], + [1726473554000, 0.19999999925494194], + [1726474454000, 0.6000000014901161], [1726475354000, 0.5], + [1726476254000, 0.5359252914786339], + [1726477154000, 0.6000000014901161], + [1726478054000, 0.6000000014901161], + [1726478954000, 0.6000000014901161], + [1726479854000, 0.6000000014901161], + [1726480754000, 0.6999999955296516], + [1726481654000, 0.6177062932401896], + [1726482554000, 0.5999999940395355], + [1726483454000, 0.6000000014901161], + [1726484354000, 0.6000000014901161], [1726485254000, 0.5], + [1726486154000, 0.6000000014901161], + [1726487054000, 0.6000000014901161], + [1726487954000, 0.5999999940395355], + [1726488854000, 0.5182037428021431], [1726489754000, 0.5], + [1726490654000, 0.3999999985098839], [1726491554000, 0.5], + [1726492454000, 0.4000000059604645], + [1726493354000, 0.29999999701976776], + [1726494254000, 0.3817962780594826], + [1726495154000, 0.30000000447034836], + [1726496054000, 0.3000000119216555], + [1726496954000, 0.30000000447034836], + [1726497854000, 0.28179626911878586], + [1726498754000, 0.30000000447034836], + [1726499654000, 0.20000000298041343], + [1726500554000, 0.20000000298023224], + [1726501454000, 0.10000000149066146], + [1726502354000, 0.10000000149011612], + [1726503254000, 0.10000000149011612], + [1726504154000, 0.10000000149011612], + [1726508654000, 0.10000000149011612], + [1726510454000, 0.10000000149011612], + [1726515854000, 0.018204445019364357], + [1726516754000, 0.018204445019364357], + [1726517654000, 0.018204443156719208], + [1726518554000, 0.018204446882009506], + [1726520354000, 0.018204443156719208], + [1726521254000, 0.036408886313438416], + [1726522154000, 0.018204450607299805], + [1726523954000, 0.01820443570613861], + [1726524854000, 0.03640889376401901], + [1726526654000, 0.036408886313438416], + [1726528454000, 0.01820443570613861], + [1726529354000, 0.018204450607299805], + [1726530254000, 0.018204445019364357], + [1726531154000, 0.018204450607299805], + [1726532054000, 0.018204450607299805], + [1726532954000, 0.018204420804977417], + [1726533854000, 0.018204450607299805], + [1726539254000, 0.10000000149011612], + [1726543754000, 0.10000000149011612], + [1726545554000, 0.03640889376401901], + [1726546454000, 0.018204450607299805], + [1726547354000, 0.018204450607299805], + [1726549154000, 0.018204420804977417], + [1726550054000, 0.018204450607299805], + [1726550954000, 0.03640889748930931], + [1726551854000, 0.018204450607299805], + [1726553654000, 0.10897777788341045], + [1726554554000, 0.2179555483162403], + [1726555454000, 0.30000000074505806], + [1726556354000, 0.3999999985098839], + [1726557254000, 0.29999999701976776], + [1726558154000, 0.5000000074505806], + [1726559054000, 0.40000000596064633], + [1726559954000, 0.6000000014901161], + [1726560854000, 0.6000000014901161], + [1726561754000, 0.5000000000003642], + [1726562654000, 0.6000000238424041], + [1726563554000, 0.6000000014901161], [1726564454000, 0.60000002384204], + [1726565354000, 0.700000025331974], + [1726566254000, 0.6000000238418579], + [1726567154000, 0.6817955747246742], + [1726568054000, 0.700000025331974], [1726568954000, 0.600000023842405], + [1726569854000, 0.6000000014901161], + [1726570754000, 0.6000000238418579], + [1726571654000, 0.6000000014901161], + [1726572554000, 0.6000000014901161], + [1726573454000, 0.5000000000003642], + [1726574354000, 0.5817955508828163], + [1726575254000, 0.6000000014901161], + [1726576154000, 0.48179567605257034], + [1726577054000, 0.5000000149011612], + [1726577954000, 0.5000000074505806], + [1726578854000, 0.4000000134110451], + [1726579754000, 0.4000000134110451], + [1726580654000, 0.30000000447034836], + [1726581554000, 0.4000000134110451], + [1726582454000, 0.30000000447034836], + [1726583354000, 0.281795434653759], + [1726584254000, 0.30000000447034836], + [1726585154000, 0.5276800245048427], + [1726586054000, 0.5094755562022328], + [1726586954000, 0.6187022551894188], + [1726587854000, 0.48229333758354187], + [1726588754000, 0.5187022518366575], + [1726589654000, 0.5551110357046127], + [1726590554000, 0.5733157098293304], + [1726591454000, 0.5097243785858154], + [1726592354000, 0.527928814291954], + [1726593254000, 0.6097243875265121], + [1726594154000, 0.5279290527105331], + [1726595054000, 0.546133279800415], + [1726595954000, 0.09102225303649902], + [1726596854000, 0.018204689025878906], + [1726597754000, 0.018204212188720703], + [1726598654000, 0.018204212188720703], + [1726599554000, 0.018204689025878906], + [1726600454000, 0.018204212188720703], + [1726601354000, 0.018204689025878906], + [1726602254000, 0.018204689025878906], + [1726603154000, 0.018204212188720703], + [1726604054000, 0.018204212188720703], + [1726604954000, 0.018204689025878906], + [1726605854000, 0.03640913963317871], + [1726606754000, 0.0182037353515625], + [1726607654000, 0.018204689025878906], + [1726608554000, 0.018204689025878906], + [1726609454000, 0.018204212188720703], + [1726610354000, 0.018204689025878906], + [1726612154000, 0.018204212188720703], + [1726613054000, 0.018204689025878906], + [1726613954000, 0.018204212188720703], + [1726614854000, 0.03640910983085632], + [1726616654000, 0.018204689025878906], + [1726617554000, 0.0182037353515625], + [1726618454000, 0.018204689025878906], + [1726619354000, 0.018204689025878906], + [1726620254000, 0.03640866279602051], + [1726624754000, 0.10000000149011612], + [1726630154000, 0.10000000149011612], + [1726631954000, 0.018204212188720703], + [1726632854000, 0.018204689025878906], + [1726633754000, 0.018204689025878906], + [1726635554000, 0.03640866279602051], + [1726636454000, 0.018204689025878906], + [1726638254000, 0.036408424377441406], + [1726640954000, 0.20000000298023224], + [1726642754000, 0.10000000149011612], + [1726644554000, 0.09999999962747097], + [1726645454000, 0.09999999962747097], + [1726646354000, 0.29999999701976776], + [1726647254000, 0.32693325355648994], + [1726648154000, 0.5999999940395355], [1726649054000, 0.5], + [1726649954000, 0.5177067760378122], + [1726650854000, 0.5000000018626451], + [1726651754000, 0.6000000014901161], + [1726652654000, 0.6359114572405815], + [1726653554000, 0.699502557516098], + [1726654454000, 0.6000000014901161], + [1726655354000, 0.6000000014901161], + [1726656254000, 0.5359109863638878], + [1726657154000, 0.6000000014901161], [1726658054000, 0.5], + [1726658954000, 0.5], [1726659854000, 0.5], [1726660754000, 0.5], + [1726661654000, 0.5], [1726662554000, 0.5], + [1726663454000, 0.3999999985098839], + [1726664354000, 0.4000000115483999], + [1726665254000, 0.4000000134110451], + [1726666154000, 0.30000000447034836], + [1726667054000, 0.30000000447034836], + [1726667954000, 0.4000000134110451], + [1726668854000, 0.30000000447034836], + [1726669754000, 0.30000000447034836], + [1726670654000, 0.20000000298041343], + [1726671554000, 0.4912714511156082], + [1726672454000, 0.6640890315175056], + [1726673354000, 0.5551107972860336], + [1726674254000, 0.5551112443208694], + [1726675154000, 0.5733154863119125], + [1726676054000, 0.5551112741231918], + [1726676954000, 0.4733150005340576], + [1726677854000, 0.5915196686983109], + [1726678754000, 0.5284286513924599], + [1726679654000, 0.5097243785858154], + [1726680554000, 0.5461337566375732], + [1726681454000, 0.627928115427494], + [1726682354000, 0.10922694206237793], + [1726683254000, 0.018204689025878906], + [1726684154000, 0.018204689025878906], + [1726685054000, 0.0182037353515625], + [1726685954000, 0.018204689025878906], + [1726686854000, 0.018204689025878906], + [1726687754000, 0.0182037353515625], + [1726689554000, 0.03640937805175781], + [1726690454000, 0.036408185958862305], + [1726691354000, 0.018205642700195312], + [1726693154000, 0.0182037353515625], + [1726694054000, 0.03640937805175781], + [1726694954000, 0.0182037353515625], + [1726696754000, 0.018204689025878906], + [1726697654000, 0.03640913963317871], + [1726698554000, 0.018204689025878906], + [1726699454000, 0.0182037353515625], + [1726700354000, 0.018204689025878906], + [1726701254000, 0.018204689025878906], + [1726703054000, 0.036409080028533936], + [1726703954000, 0.036408424377441406], + [1726705754000, 0.018204689025878906], + [1726706654000, 0.018204689025878906], + [1726710254000, 0.10000000149011612], + [1726715654000, 0.10000000149011612], + [1726718354000, 0.0182037353515625], + [1726719254000, 0.018204450607299805], + [1726720154000, 0.018205642700195312], + [1726721054000, 0.0182037353515625], + [1726721954000, 0.0182037353515625], + [1726722854000, 0.018205642700195312], + [1726723754000, 0.03640824556350708], + [1726725554000, 0.0182037353515625], + [1726728254000, 0.10000000149011612], + [1726730054000, 0.10000000149011612], + [1726730954000, 0.10000000149011612], + [1726731854000, 0.10897750966250896], + [1726732754000, 0.19999999925494194], + [1726733654000, 0.21795501932501793], + [1726734554000, 0.4453868865966797], + [1726735454000, 0.3999999985098839], + [1726736354000, 0.4087287886068225], + [1726737254000, 0.3999999985098839], + [1726738154000, 0.5541147217154503], + [1726739054000, 0.6000000014901161], + [1726739954000, 0.6000000014901161], + [1726740854000, 0.6541147157549858], + [1726741754000, 0.5177072528749704], + [1726742654000, 0.6000000014901161], + [1726743554000, 0.517706299200654], [1726744454000, 0.5], + [1726745354000, 0.5], [1726746254000, 0.5], [1726747154000, 0.5], + [1726748054000, 0.5], [1726748954000, 0.40000000037252903], + [1726749854000, 0.5], [1726750754000, 0.3999999985098839], + [1726751654000, 0.2999999998137355], + [1726752554000, 0.3999999985098839], + [1726753454000, 0.3817981854081154], + [1726754354000, 0.30000000447034836], + [1726755254000, 0.20000000298041343], + [1726756154000, 0.30000000447034836], + [1726757054000, 0.20000000298041343], + [1726757954000, 0.4730674773456496], + [1726758854000, 0.564088732004711], + [1726759754000, 0.6004981696611136], + [1726760654000, 0.500497443950735], + [1726761554000, 0.5369075387716293], + [1726762454000, 0.5551103204488754], + [1726763354000, 0.5915196985006332], + [1726764254000, 0.5097252726554871], + [1726765154000, 0.5279272198677063], + [1726766054000, 0.6097243875265121], + [1726766954000, 0.527929961681366], [1726767854000, 0.546133816242218], + [1726768754000, 0.05461311340332031], + [1726769654000, 0.018205642700195312], + [1726770554000, 0.018201828002929688], + [1726771454000, 0.03641003370285034], + [1726772354000, 0.018205642700195312], + [1726773254000, 0.018201828002929688], + [1726774154000, 0.018205642700195312], + [1726775054000, 0.018205642700195312], + [1726775954000, 0.0182037353515625], + [1726776854000, 0.0182037353515625], + [1726777754000, 0.018205642700195312], + [1726778654000, 0.0182037353515625], + [1726779554000, 0.0182037353515625], + [1726780454000, 0.018205642700195312], + [1726781354000, 0.0182037353515625], + [1726782254000, 0.0182037353515625], + [1726783154000, 0.018205642700195312], + [1726784054000, 0.036408185958862305], + [1726785854000, 0.018205642700195312], + [1726786754000, 0.036407470703125], + [1726788554000, 0.018205642700195312], + [1726789454000, 0.036408185958862305], + [1726790354000, 0.018205642700195312], + [1726791254000, 0.0182037353515625], + [1726792154000, 0.0182037353515625], + [1726794854000, 0.10000000149011612], + [1726800254000, 0.10000000149011612], + [1726804754000, 0.018205642700195312], + [1726805654000, 0.0182037353515625], + [1726806554000, 0.03641009330749512], + [1726807454000, 0.0182037353515625], + [1726808354000, 0.0182037353515625], + [1726809254000, 0.018205642700195312], + [1726811054000, 0.0182037353515625], + [1726811954000, 0.018204450607299805], + [1726813754000, 0.0182037353515625], + [1726814654000, 0.20000000298023224], + [1726815554000, 0.10897750966250896], + [1726816454000, 0.19999999925494194], + [1726817354000, 0.29999999701976776], + [1726818254000, 0.2999999998137355], + [1726819154000, 0.30872689466923475], + [1726820054000, 0.3999999985098839], + [1726820954000, 0.2999999998137355], + [1726821854000, 0.2999999998137355], + [1726822754000, 0.40872689336538315], + [1726823654000, 0.30000000074505806], + [1726824554000, 0.19999999925494194], + [1726825454000, 0.10897750966250896], + [1726826354000, 0.10000000149011612], + [1726827254000, 0.30000000074505806], + [1726828154000, 0.30000000074505806], + [1726829054000, 0.21795692667365074], + [1726829954000, 0.19999999925494194], + [1726830854000, 0.10897750966250896], + [1726831754000, 0.09999999962747097], + [1726832654000, 0.10897750966250896], + [1726833554000, 0.19999999925494194], + [1726834454000, 0.19999999925494194], + [1726835354000, 0.29999999701976776], + [1726836254000, 0.5000000018626451], + [1726837154000, 0.29999999701976776], + [1726838054000, 0.29999999701976776], + [1726838954000, 0.30000000074505806], + [1726839854000, 0.29999999701976776], + [1726840754000, 0.29999999701976776], + [1726841654000, 0.19999999925494194], + [1726842554000, 0.29999999701976776], + [1726843454000, 0.29999999701976776], + [1726844354000, 0.4548637457191944], + [1726845254000, 0.5822925269603729], + [1726846154000, 0.491768647916615], [1726847054000, 0.500500001013279], + [1726847954000, 0.5369056910276413], + [1726848854000, 0.5915186852216721], + [1726849754000, 0.5461337566375732], + [1726850654000, 0.5461337566375732], + [1726851554000, 0.5279300212860107], + [1726852454000, 0.5279281139373779], + [1726853354000, 0.5461337566375732], + [1726854254000, 0.5279281139373779], + [1726855154000, 0.07281684875488281], + [1726856054000, 0.018205642700195312], + [1726856954000, 0.036408066749572754], + [1726857854000, 0.018205642700195312], + [1726858754000, 0.0182037353515625], + [1726859654000, 0.0182037353515625], + [1726860554000, 0.018205642700195312], + [1726861454000, 0.0182037353515625], + [1726863254000, 0.018205642700195312], + [1726864154000, 0.036407470703125], + [1726865054000, 0.018205642700195312], + [1726866854000, 0.0182037353515625], + [1726867754000, 0.0182037353515625]]}, + 'totals': {'Bc': 8.57547284453176, 'Gc': 1.7905250787734985, 'Pb': 48.49291117489338, + 'Pc': 16.570437631577075, 'Pg': 34.48880581557751, 'Gb': 0.01869735773652792, + 'Bg': 29.35484167933464, 'kwh': 139.29169158242445}} diff --git a/tests/test_forecast.py b/tests/test_forecast.py index 975103aa..c2d0c70b 100644 --- a/tests/test_forecast.py +++ b/tests/test_forecast.py @@ -2,6 +2,9 @@ from quartz_solar_forecast.pydantic_models import PVSite from datetime import datetime, timedelta +import numpy as np + + def test_run_forecast(): # make input data site = PVSite(latitude=51.75, longitude=-1.25, capacity_kwp=1.25) @@ -55,7 +58,22 @@ def test_run_forecast_historical(): print("\n Prediction based on UKMO NWP\n") print(predications_df_ukmo) print(f" Max: {predications_df_ukmo['power_kw'].max()}") - + print("\n Prediction based on XGB\n") print(predications_df_xgb) + +def test_large_capacity(): + + # make input data + site = PVSite(latitude=51.75, longitude=-1.25, capacity_kwp=4) + site_large = PVSite(latitude=51.75, longitude=-1.25, capacity_kwp=4000) + ts = datetime.today() - timedelta(weeks=2) + + # run model with icon, gfs and ukmo nwp + predications_df = run_forecast(site=site, model="gb", ts=ts, nwp_source="gfs") + predications_df_large = run_forecast(site=site_large, model="gb", ts=ts, nwp_source="gfs") + + assert np.round(predications_df["power_kw"].sum() * 1000, 8) == np.round( + predications_df_large["power_kw"].sum(), 8 + ) diff --git a/tests/test_generate_forecast.py b/tests/test_generate_forecast.py new file mode 100644 index 00000000..5c5c7aa4 --- /dev/null +++ b/tests/test_generate_forecast.py @@ -0,0 +1,55 @@ +import os +import pandas as pd +from datetime import datetime, timedelta +import quartz_solar_forecast.forecast as forecast +from quartz_solar_forecast.utils.forecast_csv import write_out_forecasts +from quartz_solar_forecast.pydantic_models import PVSite + +def test_generate_forecast(monkeypatch): + site_name = "TestCase" + latitude = 51.75 + longitude = -1.25 + capacity_kwp = 1.25 + start_datetime = "2024-03-10 00:00:00" + end_datetime = "2024-03-11 00:00:00" + init_time_freq = 6 + output_dir = os.path.join(os.getcwd(), "csv_forecasts") + output_file_name = ( + f"forecast_{site_name}_{start_datetime[:10]}_{end_datetime[:10]}.csv" + ) + output_file_path = os.path.join(output_dir, output_file_name) + + def mock_forecast( + site: PVSite, + model: str = "gb", + ts: datetime | str = None, + nwp_source: str = "icon", + ): + return pd.DataFrame( + { + "datetime": [ + datetime(2024, 3, 10, 0, 0) + timedelta(hours=6 * i) + for i in range(4) + ], + "power_kw": [0.1, 0.5, 0.8, 0.6], + "forecast_init_time": [datetime(2024, 3, 10, 0, 0)] * 4, + } + ) + + monkeypatch.setattr(forecast, "run_forecast", mock_forecast) + + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + write_out_forecasts( + init_time_freq, + start_datetime, + end_datetime, + site_name, + latitude, + longitude, + capacity_kwp, + ) + + assert os.path.exists(output_file_path) + os.remove(output_file_path)