From c15c69c0329e94e4bc2e587dcbe71aef8167e501 Mon Sep 17 00:00:00 2001 From: toravest Date: Thu, 22 May 2025 17:01:30 +0200 Subject: [PATCH 01/21] change output folder for json and figures --- .gitignore | 2 +- notebooks/notebook_compare_one_day_data.ipynb | 13 +++++----- .../notebook_compare_one_week_data.ipynb | 13 +++++----- .../notebook_compare_statistic_data.ipynb | 17 +++++++----- notebooks/notebook_current_data.ipynb | 11 +++++--- notebooks/notebook_interactive_data.ipynb | 26 +++++++++++++++---- notebooks/notebook_one_day_data.ipynb | 15 +++++++---- notebooks/notebook_one_week_data.ipynb | 16 +++++++----- notebooks/notebook_statistic_data.ipynb | 20 +++++++++----- src/my_package/data.py | 6 ++--- src/my_package/util.py | 2 +- 11 files changed, 90 insertions(+), 51 deletions(-) diff --git a/.gitignore b/.gitignore index a733132..d052307 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,6 @@ *.pyc /venv/ .env -/data/output*/ +data/*/output*/ old_* .DS_Store \ No newline at end of file diff --git a/notebooks/notebook_compare_one_day_data.ipynb b/notebooks/notebook_compare_one_day_data.ipynb index e9f1bec..657b63d 100644 --- a/notebooks/notebook_compare_one_day_data.ipynb +++ b/notebooks/notebook_compare_one_day_data.ipynb @@ -154,8 +154,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen \"../data/output_sammenligning_dag/data_{filnavn}.json\"" + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen `../data/json/output_compare_one_day/data_{filnavn}.json`" ] }, { @@ -179,7 +180,7 @@ "from my_package.data import write_data\n", "\n", "# Overwrites the folder stored inside the function\n", - "folder = \"../data/output_sammenligning_dag\"\n", + "folder = \"../data/json/output_compare_one_day\"\n", "\n", "filename = input(\"Write filename: \")\n", "\n", @@ -210,7 +211,7 @@ "import json\n", "from pandasql import sqldf\n", "\n", - "file_path = f'../data/output_sammenligning_dag/data_{filename}.json'\n", + "file_path = f'../data/json/output_compare_one_day/data_{filename}.json'\n", "\n", "from my_package.data import extract_city_df\n", "\n", @@ -407,7 +408,7 @@ "\n", "I grafen under ser vi oversikt over nedbør for begge stedene sammenlignet 'side om side'. Vi skiller også mellom snø og regn, og dersom det skulle snø og regne i samme time, vil de bare 'stables' oppå hverandre.\n", "\n", - "Grafen lagres i mappen \"../data/output_fig_sammenligning\"" + "Grafen lagres i mappen `../data/figures/output_fig_compare_one_day`" ] }, { @@ -421,7 +422,7 @@ "import os\n", "\n", "# Where the figure should be saved when exported\n", - "output_folder = \"../data/output_fig_sammenligning\"\n", + "output_folder = \"../data/figures/output_fig_compare_one_day\"\n", "\n", "# Creates the folder if it does not exist\n", "os.makedirs(output_folder, exist_ok=True)\n", diff --git a/notebooks/notebook_compare_one_week_data.ipynb b/notebooks/notebook_compare_one_week_data.ipynb index 2b83191..f1a9a6d 100644 --- a/notebooks/notebook_compare_one_week_data.ipynb +++ b/notebooks/notebook_compare_one_week_data.ipynb @@ -146,8 +146,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen `../data/output_sammenligning_uke/data_{filnavn}.json`" + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen `../data/json/output_compare_one_week/data_{filnavn}.json`" ] }, { @@ -172,7 +173,7 @@ "from my_package.data import write_data\n", "\n", "# Overwrites the folder stored inside the function\n", - "folder = \"../data/output_sammenligning_uke\"\n", + "folder = \"../data/json/output_compare_one_week\"\n", "\n", "filename = input(\"Write filename: \")\n", "\n", @@ -205,7 +206,7 @@ "import json\n", "from pandasql import sqldf\n", "\n", - "file_path = f'../data/output_sammenligning_uke/data_{filename}.json'\n", + "file_path = f'../data/json/output_compare_one_week/data_{filename}.json'\n", "\n", "from my_package.data import extract_city_df\n", "\n", @@ -413,7 +414,7 @@ "\n", "I grafen under ser vi oversikt over nedbør for begge stedene sammenlignet 'side om side'. Vi skiller også mellom snø og regn, og dersom det skulle snø og regne i samme time, vil de bare 'stables' oppå hverandre.\n", "\n", - "Grafen lagres i mappen \"../data/output_fig_sammenligning\"" + "Grafen lagres i mappen `../data/figures/output_fig_compare_one_week`" ] }, { @@ -428,7 +429,7 @@ "import os\n", "\n", "# Where the figure should be saved when exported\n", - "output_folder = \"../data/output_fig_sammenligning\"\n", + "output_folder = \"../data/figures/output_fig_compare_one_week\"\n", "\n", "# Creates the folder if it does not exist\n", "os.makedirs(output_folder, exist_ok=True)\n", diff --git a/notebooks/notebook_compare_statistic_data.ipynb b/notebooks/notebook_compare_statistic_data.ipynb index c2bc20f..77afeb1 100644 --- a/notebooks/notebook_compare_statistic_data.ipynb +++ b/notebooks/notebook_compare_statistic_data.ipynb @@ -93,8 +93,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen `./data/output_sammenligning_statistikk/data_{filnavn}.json`\n" + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen `./data/json/output_compare_statistic/data_{filnavn}.json`\n" ] }, { @@ -119,7 +120,7 @@ "from my_package.data import write_data\n", "\n", "# Overwrites the folder stored inside the function\n", - "folder = \"../data/output_sammenligning_statistikk\"\n", + "folder = \"../data/json/output_compare_statistic\"\n", "\n", "filename = input(\"Write filename: \")\n", "\n", @@ -149,7 +150,7 @@ "import json\n", "from pandasql import sqldf\n", "\n", - "file_path = f'../data/output_sammenligning_statistikk/data_{filename}.json'\n", + "file_path = f'../data/json/output_compare_statistic/data_{filename}.json'\n", "\n", "from my_package.data import extract_city_data_stat\n", "\n", @@ -269,7 +270,9 @@ "metadata": {}, "source": [ "### Plotter data\n", - "Her plottes temperatur og regn på samme akse, med vind i en egen graf under, men de deler samme x-akse, som er month_date." + "Her plottes temperatur og regn på samme akse, med vind i en egen graf under, men de deler samme x-akse, som er month_date.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_compare_statistic`" ] }, { @@ -279,7 +282,7 @@ "metadata": {}, "outputs": [], "source": [ - "output_folder = \"../data/output_fig\"\n", + "output_folder = \"../data/figures/output_fig_compare_statistic\"\n", "os.makedirs(output_folder, exist_ok=True) # Create the folder if it doesn't exist\n", "\n", "temp_city_1 = sqldf('''SELECT `temp.mean_celsius` FROM both_cities_df WHERE city = \"city_1\"''')\n", @@ -297,7 +300,7 @@ "wind_city_1 = sqldf('''SELECT `wind.mean` FROM both_cities_df WHERE city = \"city_1\"''').iloc[:,0]\n", "wind_city_2 = sqldf('''SELECT `wind.mean` FROM both_cities_df WHERE city = \"city_2\"''').iloc[:,0]\n", "\n", - "x_axis = city_1_df['month_day']\n", + "x_axis = city_1_df.index\n", "\n", "fig, (ax1, ax3) = plt.subplots(2, 1, figsize = (15, 8), sharex=True)\n", "\n", diff --git a/notebooks/notebook_current_data.ipynb b/notebooks/notebook_current_data.ipynb index 4b03c06..0352dca 100644 --- a/notebooks/notebook_current_data.ipynb +++ b/notebooks/notebook_current_data.ipynb @@ -50,8 +50,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen \"../data/output_current/data_{filnavn}.json\"\n", + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen \"../data/json/output_current/data_{filnavn}.json\"\n", "\n" ] }, @@ -64,6 +65,8 @@ "# Gets the absolute path to the src folder\n", "sys.path.append(os.path.abspath(\"../src\"))\n", "\n", + "folder = \"../data/json/output_current/\"\n", + "\n", "from my_package.data import write_data\n", "\n", "# The user choose the filename\n", @@ -91,7 +94,7 @@ "import json\n", "\n", "# Read from the json-file\n", - "with open(f\"../data/output_current_data/data_{filename}.json\", \"r\") as file:\n", + "with open(f\"../data/json/output_current/data_{filename}.json\", \"r\") as file:\n", " data = json.load(file)\n", "\n", "# Display data\n", @@ -178,7 +181,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.12.5" } }, "nbformat": 4, diff --git a/notebooks/notebook_interactive_data.ipynb b/notebooks/notebook_interactive_data.ipynb index ebed076..9f248af 100644 --- a/notebooks/notebook_interactive_data.ipynb +++ b/notebooks/notebook_interactive_data.ipynb @@ -118,8 +118,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen \"../data/output_stedsnavn/data_{filnavn}.json\"" + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen `../data/json/output_interactive/data_{filnavn}.json`" ] }, { @@ -131,6 +132,8 @@ "# Gets the absolute path to the src folder\n", "sys.path.append(os.path.abspath(\"../src\"))\n", "\n", + "folder = \"../data/json/output_interactive\"\n", + "\n", "from my_package.data import write_data\n", "\n", "filename = input(\"Write filename: \")\n", @@ -157,7 +160,7 @@ "import pandas as pd\n", "\n", "# Reads from file using pandas\n", - "weather_data = pd.read_json(f'../data/output_stedsnavn/data_{filename}.json')\n", + "weather_data = pd.read_json(f'../data/json/output_interactive/data_{filename}.json')\n", "#output_stedsnavn\n", "from my_package.data import extract_city_df\n", "\n", @@ -173,7 +176,9 @@ "Regner ut gjennomsnittst-temperatur ved hjelp av innebygde funksjoner. Finner også høyeste og laveste målte temperatur.\n", "Plotter gjennomsnittstemperaturen og temperaturen per time for dagen valgt, ved hjelp av matplotlib.\n", "\n", - "Ved hjelp av ipywidgets så er dette et interaktivt diagram som brukeren selv kan justere på ønskelige effekter ved diagrammet. Når koden først kjøres vil det komme standard layout men disse er det bare å endre, for eksempel farge og størrelse på plots. " + "Ved hjelp av ipywidgets så er dette et interaktivt diagram som brukeren selv kan justere på ønskelige effekter ved diagrammet. Når koden først kjøres vil det komme standard layout men disse er det bare å endre, for eksempel farge og størrelse på plots. \n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_interactive`" ] }, { @@ -199,6 +204,12 @@ "dot_size = widgets.IntSlider(value=40, min=10, max=100, step=5, description='Punktstørrelse')\n", "\n", "def plot_temp(show_mean, show_grid, dot_color, mean_color, dot_size):\n", + " # Where the figure should be saved when exported\n", + " output_folder = \"../data/figures/output_fig_interactive\"\n", + "\n", + " # Creates the folder if it does not exist\n", + " os.makedirs(output_folder, exist_ok=True)\n", + " \n", " clear_output(wait=True)\n", "\n", " temp_mean = temp.mean().round(2)\n", @@ -226,6 +237,11 @@ " if show_grid:\n", " plt.grid()\n", "\n", + " # Save the plot to the data/output_fig folder\n", + " plot_path = os.path.join(output_folder, f\"weather_interactive_plot_{city_name}.png\")\n", + " # Save the plot as a PNG file\n", + " plt.savefig(plot_path)\n", + "\n", " plt.legend(loc='upper right')\n", " plt.show()\n", "\n", @@ -262,7 +278,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.12.5" } }, "nbformat": 4, diff --git a/notebooks/notebook_one_day_data.ipynb b/notebooks/notebook_one_day_data.ipynb index 6178c29..2cf095c 100644 --- a/notebooks/notebook_one_day_data.ipynb +++ b/notebooks/notebook_one_day_data.ipynb @@ -118,8 +118,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen \"../data/output_stedsnavn/data_{filnavn}.json\"" + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen `../data/json/output_one_day/data_{filnavn}.json`" ] }, { @@ -131,6 +132,8 @@ "# Gets the absolute path to the src folder\n", "sys.path.append(os.path.abspath(\"../src\"))\n", "\n", + "folder = \"../data/json/output_one_day\"\n", + "\n", "from my_package.data import write_data\n", "\n", "filename = input(\"Write filename: \")\n", @@ -157,7 +160,7 @@ "import pandas as pd\n", "\n", "# Reads from file using pandas\n", - "weather_data = pd.read_json(f'../data/output_stedsnavn/data_{filename}.json')\n", + "weather_data = pd.read_json(f'../data/json/output_one_day/data_{filename}.json')\n", "\n", "from my_package.data import extract_city_df\n", "\n", @@ -359,7 +362,9 @@ "\n", "Temperatur og nedbør får plass i samme graf, hvor man leser temperatur verdiene på venstre side, og nedbørsverdiene på høyre side.\n", "\n", - "I grafen under, men på samme x-akse, finner vi informasjon om vind, både vindhastighet og vindkast." + "I grafen under, men på samme x-akse, finner vi informasjon om vind, både vindhastighet og vindkast.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_one_day`" ] }, { @@ -373,7 +378,7 @@ "import os\n", "\n", "# Where the figure should be saved when exported\n", - "output_folder = \"../data/output_fig\"\n", + "output_folder = \"../data/figures/output_fig_one_day\"\n", "\n", "# Creates the folder if it does not exist\n", "os.makedirs(output_folder, exist_ok=True)\n", diff --git a/notebooks/notebook_one_week_data.ipynb b/notebooks/notebook_one_week_data.ipynb index 29c59a8..37cc5e0 100644 --- a/notebooks/notebook_one_week_data.ipynb +++ b/notebooks/notebook_one_week_data.ipynb @@ -104,9 +104,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen \"../data/output_stedsnavn/data_{filnavn}.json\"\n", - "\n" + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen \"../data/json/output_one_week/data_{filnavn}.json\"" ] }, { @@ -118,6 +118,8 @@ "# Gets the absolute path to the src folder\n", "sys.path.append(os.path.abspath(\"../src\"))\n", "\n", + "folder = \"../data/json/output_one_week\"\n", + "\n", "from my_package.data import write_data\n", "\n", "# User chose the name for the file\n", @@ -145,7 +147,7 @@ "import pandas as pd\n", "\n", "# Reads from file using pandas\n", - "weather_data = pd.read_json(f'../data/output_stedsnavn/data_{filename}.json')\n", + "weather_data = pd.read_json(f'../data/json/output_one_week/data_{filename}.json')\n", "\n", "from my_package.data import extract_city_df\n", "\n", @@ -348,7 +350,9 @@ "\n", "Temperatur og nedbør får plass i samme graf, hvor man leser temperatur verdiene på venstre side, og nedbørsverdiene på høyre side.\n", "\n", - "I grafen under, men på samme x-akse, finner vi informasjon om vind, både vindhastighet og vindkast." + "I grafen under, men på samme x-akse, finner vi informasjon om vind, både vindhastighet og vindkast.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_one_week`" ] }, { @@ -362,7 +366,7 @@ "import os\n", "\n", "# Where the figure should be saved when exported\n", - "output_folder = \"../data/output_fig\"\n", + "output_folder = \"../data/figures/output_fig_one_week\"\n", "\n", "# Creates the folder if it does not exist\n", "os.makedirs(output_folder, exist_ok=True)\n", diff --git a/notebooks/notebook_statistic_data.ipynb b/notebooks/notebook_statistic_data.ipynb index 0beeb34..5ba4d36 100644 --- a/notebooks/notebook_statistic_data.ipynb +++ b/notebooks/notebook_statistic_data.ipynb @@ -51,8 +51,9 @@ "\n", "Skriv inn navn for til filen du vil lagre med dataen.\n", "\n", - "Eks. test\n", - "Da vil filen lagres som data_**test**.json, i mappen `../data/output_statistikk/data_{filnavn}.json`\n" + "Eks. filnavn: test\n", + "\n", + "Da vil filen lagres som data_**test**.json, i mappen `../data/json/output_statistic/data_{filnavn}.json`\n" ] }, { @@ -64,6 +65,8 @@ "# Gets the absolute path to the src folder\n", "sys.path.append(os.path.abspath(\"../src\"))\n", "\n", + "folder = \"../data/json/output_statistic\"\n", + "\n", "from my_package.data import write_data\n", "\n", "filename = input(\"Write filename: \")\n", @@ -88,7 +91,7 @@ "source": [ "import pandas as pd\n", "\n", - "data = pd.read_json(f'../data/output_statistikk/data_{filename}.json')\n", + "data = pd.read_json(f'../data/json/output_statistic/data_{filename}.json')\n", "\n", "# Display data\n", "display(data)" @@ -191,7 +194,9 @@ "metadata": {}, "source": [ "### Plotter data\n", - "Her plottes temperatur og regn på samme akse, med vind i en egen graf under, men de deler samme x-akse, som er month_date." + "Her plottes temperatur og regn på samme akse, med vind i en egen graf under, men de deler samme x-akse, som er month_date.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_statistic`" ] }, { @@ -203,7 +208,7 @@ "import matplotlib.pyplot as plt\n", "import matplotlib.dates as mdates\n", "\n", - "output_folder = \"../data/output_fig\"\n", + "output_folder = \"../data/figures/output_fig_statistic\"\n", "os.makedirs(output_folder, exist_ok=True) # Create the folder if it doesn't exist\n", "\n", "\n", @@ -498,7 +503,8 @@ "metadata": {}, "source": [ "### Skriver dataen til fil\n", - "Lagrer rekord-dataen i en fil, med stedsnavn." + "Lagrer rekord-dataen i filen:\n", + "`../data/json/output_records/data_records_{stedsnavn}`" ] }, { @@ -535,7 +541,7 @@ "import json\n", "\n", "# Reads data from file and store it\n", - "with open(f\"../data/output_record/data_{filename}.json\", \"r\", encoding=\"utf-8\") as file:\n", + "with open(f\"../data/json/output_records/data_{filename}.json\", \"r\", encoding=\"utf-8\") as file:\n", " data = json.load(file)\n", "\n", "# Normalize the data for better readability\n", diff --git a/src/my_package/data.py b/src/my_package/data.py index 55fda66..74a91e2 100644 --- a/src/my_package/data.py +++ b/src/my_package/data.py @@ -31,7 +31,7 @@ def fetch_current_data(city_name): # Converts the data into json data = response.json() - folder = "../data/output_current_data" + folder = "../data/json/output" print("Data fetch: ok") return data, folder @@ -57,7 +57,7 @@ def fetch_time_data(start_date, end_date, city_name): # Converts the data into json data = response.json() - folder = "../data/output_stedsnavn" + folder = "../data/json/output" print("Data fetch: ok") return data, folder @@ -82,7 +82,7 @@ def fetch_stat_data(city_name): # Converts the data into json data = response.json() - folder = "../data/output_statistikk" + folder = "../data/json/output" print("Data fetch: ok") return data, folder diff --git a/src/my_package/util.py b/src/my_package/util.py index e23afcb..88682d7 100644 --- a/src/my_package/util.py +++ b/src/my_package/util.py @@ -65,7 +65,7 @@ def get_records(df, city_name): } summary_df = pd.DataFrame(summary_data) - folder = "../data/output_record" + folder = "../data/json/output_records" filename = f"records_{city_name}" return summary_df, filename, folder \ No newline at end of file From 9bc0dc14aa214d2251395356a9f353ffad0e8107 Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 08:22:53 +0200 Subject: [PATCH 02/21] add function documentation to data.py --- src/my_package/data.py | 67 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/src/my_package/data.py b/src/my_package/data.py index 74a91e2..b42fb76 100644 --- a/src/my_package/data.py +++ b/src/my_package/data.py @@ -4,7 +4,6 @@ from dotenv import load_dotenv import json import pandas as pd -import sys load_dotenv() @@ -18,7 +17,14 @@ # Gets the current data from the API - openweathermap.org def fetch_current_data(city_name): - + ''' + This function taking in the city_name and, fetch the currentdata from the + API - openweathermap.org. The url is specified to use the users API_KEY and the city name + inserted, when the function is started.An if-statement makes sure the status.code gotten + from the request is 200, which means 'ok'. If so, it prints that the fetch is ok, and make + the data json compatible. And returns a standard folder for the data to be written to. + If the status code is not 200, it returns no data and the status code. + ''' # f-string url, to add the "custom" variables to the API-request url = f"https://api.openweathermap.org/data/2.5/weather?q={city_name},NO&units=metric&appid={API_KEY}" @@ -35,7 +41,6 @@ def fetch_current_data(city_name): print("Data fetch: ok") return data, folder - else: # If html status code != 200, print the status code @@ -44,7 +49,14 @@ def fetch_current_data(city_name): # Gets the wanted timeperiod data from the API - openweathermap.org def fetch_time_data(start_date, end_date, city_name): - + ''' + This function is taking in the city_name, and the start/end date. To fetch data from the + API - openweathermap.org, for the wanted place during the wanted time. The url is an f-string + to take in the custom variables for city_name, start_date, end_date and the users API_KEY. + An if-statement makes sure the status.code gotten from the request is 200, which means 'ok'. + If so, it prints that the fetch is ok, and make the data json compatible. And returns a standard + folder for the data to be written to. If the status code is not 200, it returns no data and the status code. + ''' # f-string url, to add the "custom" variables to the API-request url = f"https://history.openweathermap.org/data/2.5/history/city?q={city_name},NO&units=metric&type=hour&start={start_date}&end={end_date}&appid={API_KEY}" @@ -69,7 +81,12 @@ def fetch_time_data(start_date, end_date, city_name): # Gets statistical data from the API - openweathermap.org def fetch_stat_data(city_name): - + ''' + This function is taking in the city_name parameter, and fetch statistical weather data from the + API - openweathermap.org. An if-statement makes sure the status.code gotten from the request is 200, which + means 'ok'. If so, it prints that the fetch is ok, and make the data json compatible. And returns a standard + folder for the data to be written to. If the status code is not 200, it returns no data and the status code. + ''' # f-string url, to add the "custom" variables to the API-request url = f"https://history.openweathermap.org/data/2.5/aggregated/year?q={city_name},NO&appid={API_KEY}&units=metric" @@ -94,14 +111,21 @@ def fetch_stat_data(city_name): # Write data to json-file def write_data(data, folder, filename): + ''' + This function is taking in the parameters, data: the json data we want to write. + Folder: the place we want the file to be. And filename: what the file should be named. + It then finds the way from the script to the root of the project, and navigate to the wanted + output place. '../data/json/output_{notebook}', if the folder do not exsist it will be created. + Then the json-data is written to a json-file, inside the right folder with the choosen filename. + ''' # Ensure the 'output_stedsdata' folder exists inside the 'data' folder at the root of the project script_dir = os.path.dirname(os.path.abspath(__file__)) # Get the directory of the script project_root = os.path.abspath(os.path.join(script_dir, os.pardir, os.pardir)) # Navigate to the root of the project data_dir = os.path.join(project_root, 'data', folder) - os.makedirs(data_dir, exist_ok=True) # Creates 'data/output_stedsdata' folder if it doesn't exist + os.makedirs(data_dir, exist_ok=True) # Creates 'data/output_{notebook}' folder if it doesn't exist - # Write the JSON data to a file inside the 'output_stedsdata' folder - file_path = os.path.join(data_dir, f'data_{filename}.json') # Creates 'data/output_stedsdata/data_{filename}.json' + # Write the JSON data to a file inside the 'output_{notebook}' folder + file_path = os.path.join(data_dir, f'data_{filename}.json') # Creates 'data/json/output_{notebook}/data_{filename}.json' # Opens and write the data to a json file with open(file_path, 'w') as json_file: @@ -113,6 +137,16 @@ def write_data(data, folder, filename): # Function to 'normalize' the dataset, with index-changing and dropping meta-data def extract_city_df(weather_data): + ''' + This is a function taking in the parameter weather_data. This is the json-data written to a file. + This function will check for the 'list' in weather_data, becuase that is where the data is stored, + the data stored above is just meta-data we dont need. Then the data is stored like a dataframe, + and normalized using json_normaliza, for better readability and flat data structure. + Drop_duplicates checks if there are any duplicates of the column 'dt', meaning the time. + All the data can be the same, but one time should only appear once. Then the function converts + the dt to unix timestamp (easier to read), and makes it the index of the dataframe. + If the 'list' is not in the data, the function will return None. + ''' if 'list' in weather_data: # Normalize the json for better readability df = pd.json_normalize(weather_data['list']) @@ -133,6 +167,13 @@ def extract_city_df(weather_data): # Function to 'normalize' the dataset for statistic-data, with index-changing and dropping meta-data def extract_city_data_stat(data): + ''' + This is a function taking in the parameter data. This is statistical json-data written to a file. + This function will check for the 'result' in data, becuase that is where the data is stored, + the data stored above is just meta-data we dont need. Then the data is stored like a dataframe, + and normalized using json_normaliza, for better readability and flat data structure. + If the 'result' is not in the data, the function will return None. + ''' # Checks if the 'result' column is in the data if 'result' in data: # Normalize the json and store it as a dataframe for better readability @@ -142,4 +183,12 @@ def extract_city_data_stat(data): return df else: print("'result' not in data") - return None \ No newline at end of file + return None + +# This prints the documentation for the functions written inside '''these''' +print(fetch_current_data.__doc__) +print(fetch_time_data.__doc__) +print(fetch_stat_data.__doc__) +print(write_data.__doc__) +print(extract_city_df.__doc__) +print(extract_city_data_stat.__doc__) \ No newline at end of file From 29d52b16133cee0d31027c01c47abee37b4c8a9b Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 08:47:33 +0200 Subject: [PATCH 03/21] add function documentation to util.py --- src/my_package/util.py | 48 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/my_package/util.py b/src/my_package/util.py index 88682d7..3211f5d 100644 --- a/src/my_package/util.py +++ b/src/my_package/util.py @@ -3,6 +3,12 @@ # Function to replace the norcid 'æøå' def replace_nordic(city_name): + ''' + This function is taking in the parameter city_name. Thwn it goes to each letter to check for any + of the nordic letters 'æøå'. If it is one of these letters, it will be replaced like this: + 'æ' = 'ae', 'ø' = 'o', 'å' = 'aa'. And then the city_name will be returned. + ''' + for letter in city_name: if letter in 'æøå': city_name = city_name.replace('æ', 'ae') @@ -12,17 +18,33 @@ def replace_nordic(city_name): # Get the city_name input, convert nordic 'æøå' def input_place(): + ''' + This function is used to get user-input for a city_name. It will first ask the user for a city_name, + then runs the function to check for any nordic letters, before it returns the city_name. + ''' + city_name = input("Enter city name: ") city_name = replace_nordic(city_name) return city_name # Function to convert from kelvin to celsius temp def kelvin_to_celsius(temp_in_kelvin): + ''' + This function is taking in the parameter temp_in_kelvin, and make a new variable temp_in_celsius. + The function transform from kelvin to celsius by subtracting 273.15 from the kelvin_temps. + ''' + temp_in_celsius = temp_in_kelvin - 273.15 return temp_in_celsius # Ensure wqnted columns, fill with "NaN" if they dont exsist def ensure_column(df, columns): + ''' + This function is taking in the parametre df and columns. It will then check if the columns are in the df. + If the columns are not present, it will print a statement saying it is not present, before adding the columns + and fill in the value NaN. + ''' + for col in columns: if col not in df.columns: print(f"'{col}' is not present in the DataFrame. Filling with NaN.") @@ -31,6 +53,11 @@ def ensure_column(df, columns): # Fill "NaN" in wanted columns with 0 def fill_column_0(df, columns): + ''' + This function is taking in the parameters df and columns. It will then check if the columns include any NaN + values and fill these with 0. + ''' + for col in columns: try: df[col] = df[col].fillna(0) @@ -40,6 +67,11 @@ def fill_column_0(df, columns): # Cleans statistic-data, drop all columns that end with '...' using the filter function def clean_df(df): + ''' + This function is taking in the parameter df, and dataframe for statistical data. + It will then drop all the columns that end with '.p25', '.p75', '.st_dev' and '.num'. + ''' + df = df.drop(columns=df.filter(like='.p25').columns) df = df.drop(columns=df.filter(like='.p75').columns) df = df.drop(columns=df.filter(like='.st_dev').columns) @@ -49,6 +81,12 @@ def clean_df(df): # Find highest and lowest temp from statistical data def get_records(df, city_name): + ''' + This function is taking in the parameters, df and city_name from statistical data. + It will then make a new dataframe, with the maximum and minimum temperatur based on both + mean_temp and record_temp. The dataframe will be written to a new json-file with the city_name as filename. + ''' + if df.empty: print("df is empty") @@ -68,4 +106,12 @@ def get_records(df, city_name): folder = "../data/json/output_records" filename = f"records_{city_name}" - return summary_df, filename, folder \ No newline at end of file + return summary_df, filename, folder + +print(replace_nordic.__doc__) +print(input_place.__doc__) +print(kelvin_to_celsius.__doc__) +print(ensure_column.__doc__) +print(fill_column_0.__doc__) +print(clean_df.__doc__) +print(get_records.__doc__) \ No newline at end of file From caa592f0d08b6449d9f70e77e6e2a8832bf586c6 Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 10:25:31 +0200 Subject: [PATCH 04/21] add comment for print(function.__doc__) util.py --- src/my_package/util.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/my_package/util.py b/src/my_package/util.py index 3211f5d..5960005 100644 --- a/src/my_package/util.py +++ b/src/my_package/util.py @@ -108,6 +108,7 @@ def get_records(df, city_name): return summary_df, filename, folder +# This prints the documentation for the functions written inside '''these''' print(replace_nordic.__doc__) print(input_place.__doc__) print(kelvin_to_celsius.__doc__) From b828e3cba600a683b3b1ce0911ed36cf3294e6d5 Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 10:26:24 +0200 Subject: [PATCH 05/21] add function documentation to date_to_unix.py --- src/my_package/date_to_unix.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/my_package/date_to_unix.py b/src/my_package/date_to_unix.py index 89da30b..119d6f5 100644 --- a/src/my_package/date_to_unix.py +++ b/src/my_package/date_to_unix.py @@ -3,6 +3,12 @@ import time def get_unix_timestamp(): + ''' + This function will make the user input a start_date and end_date, then return a unix timestamp. + The user get asked to input in this format: yyyy, mm, dd, hh, mm. But if the user only insert + yyyy, mm, dd. The function will say the hour is 00, the same with minutes. + ''' + start_date_input = input("Choose a start date (yyyy, mm, dd, hh, mm): ") end_date_input = input("Choose an end date (yyyy, mm, dd, hh, mm): ") @@ -49,11 +55,16 @@ def get_unix_timestamp(): return unix_start, unix_end def from_unix_timestamp(unix_start, unix_end): + ''' + This function will take in the parameters unix_start, unix_end, and then convert from unix + timestamp to the inserted: yyyy, mm, dd, hh, mm + ''' + start_from_unix = datetime.datetime.fromtimestamp(unix_start) end_from_unix = datetime.datetime.fromtimestamp(unix_end) return start_from_unix, end_from_unix - - - +# This prints the documentation for the functions written inside '''these''' +print(get_unix_timestamp.__doc__) +print(from_unix_timestamp.__doc__) From bf142cda5f1c35cff85afc243ceee9123694c2ac Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 10:37:08 +0200 Subject: [PATCH 06/21] outcomment the print(function.__doc__) --- src/my_package/data.py | 12 ++++++------ src/my_package/date_to_unix.py | 4 ++-- src/my_package/util.py | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/my_package/data.py b/src/my_package/data.py index b42fb76..4170ea5 100644 --- a/src/my_package/data.py +++ b/src/my_package/data.py @@ -186,9 +186,9 @@ def extract_city_data_stat(data): return None # This prints the documentation for the functions written inside '''these''' -print(fetch_current_data.__doc__) -print(fetch_time_data.__doc__) -print(fetch_stat_data.__doc__) -print(write_data.__doc__) -print(extract_city_df.__doc__) -print(extract_city_data_stat.__doc__) \ No newline at end of file +# print(fetch_current_data.__doc__) +# print(fetch_time_data.__doc__) +# print(fetch_stat_data.__doc__) +# print(write_data.__doc__) +# print(extract_city_df.__doc__) +# print(extract_city_data_stat.__doc__) \ No newline at end of file diff --git a/src/my_package/date_to_unix.py b/src/my_package/date_to_unix.py index 119d6f5..2520e35 100644 --- a/src/my_package/date_to_unix.py +++ b/src/my_package/date_to_unix.py @@ -66,5 +66,5 @@ def from_unix_timestamp(unix_start, unix_end): return start_from_unix, end_from_unix # This prints the documentation for the functions written inside '''these''' -print(get_unix_timestamp.__doc__) -print(from_unix_timestamp.__doc__) +# print(get_unix_timestamp.__doc__) +# print(from_unix_timestamp.__doc__) diff --git a/src/my_package/util.py b/src/my_package/util.py index 5960005..93ac923 100644 --- a/src/my_package/util.py +++ b/src/my_package/util.py @@ -109,10 +109,10 @@ def get_records(df, city_name): return summary_df, filename, folder # This prints the documentation for the functions written inside '''these''' -print(replace_nordic.__doc__) -print(input_place.__doc__) -print(kelvin_to_celsius.__doc__) -print(ensure_column.__doc__) -print(fill_column_0.__doc__) -print(clean_df.__doc__) -print(get_records.__doc__) \ No newline at end of file +# print(replace_nordic.__doc__) +# print(input_place.__doc__) +# print(kelvin_to_celsius.__doc__) +# print(ensure_column.__doc__) +# print(fill_column_0.__doc__) +# print(clean_df.__doc__) +# print(get_records.__doc__) \ No newline at end of file From 19fd7449bb3665ec3b2c55b176a90977554185d9 Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 10:40:53 +0200 Subject: [PATCH 07/21] add function documentation to setup.py --- src/my_package/setup.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/my_package/setup.py b/src/my_package/setup.py index 0f18581..055b122 100644 --- a/src/my_package/setup.py +++ b/src/my_package/setup.py @@ -1,6 +1,12 @@ import os def set_up_API(): + ''' + This function is getting input from the user for their API-information. + The function creates, and add the API_KEY and API_EMAIL. When everything is set, + the API is good, and can be used to retrive data in the notebooks. + ''' + # Define the path to the .env file at the root of the project env_filepath = os.path.join(os.path.dirname(__file__), "../../.env") @@ -22,4 +28,7 @@ def set_up_API(): print("You can now run the notebooks, and get data!") print("Add your info to OpenWeatherMap.com, and the function will create and add the info to env.") -set_up_API() \ No newline at end of file +set_up_API() + +# This prints the documentation for the functions written inside '''these''' +# print(set_up_API.__doc__) \ No newline at end of file From 9a25ccf503513722529eb0b4603b9fc125816060 Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 12:44:07 +0200 Subject: [PATCH 08/21] add validation so city2 name != city1 name --- notebooks/notebook_compare_one_day_data.ipynb | 5 +++++ notebooks/notebook_compare_one_week_data.ipynb | 5 +++++ notebooks/notebook_compare_statistic_data.ipynb | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/notebooks/notebook_compare_one_day_data.ipynb b/notebooks/notebook_compare_one_day_data.ipynb index 657b63d..f52e91e 100644 --- a/notebooks/notebook_compare_one_day_data.ipynb +++ b/notebooks/notebook_compare_one_day_data.ipynb @@ -137,6 +137,11 @@ "# User input the city, for the weather\n", "city_2 = input_place()\n", "\n", + "# Cheks that the two cities is not the same\n", + "while city_2.lower() == city_1.lower():\n", + " print(\"The two places must be different\")\n", + " city_2 = input_place()\n", + "\n", "# Start_date is the first timestamp, end_date is the last\n", "start_date, end_date = timestamps[0], timestamps[-1]\n", "\n", diff --git a/notebooks/notebook_compare_one_week_data.ipynb b/notebooks/notebook_compare_one_week_data.ipynb index f1a9a6d..34a6aa4 100644 --- a/notebooks/notebook_compare_one_week_data.ipynb +++ b/notebooks/notebook_compare_one_week_data.ipynb @@ -131,6 +131,11 @@ "# User input the city, for the weather\n", "city_2 = input_place()\n", "\n", + "# Cheks that the two cities is not the same\n", + "while city_2.lower() == city_1.lower():\n", + " print(\"The two places must be different\")\n", + " city_2 = input_place()\n", + "\n", "# Stores the values in the variables\n", "data_city_2, folder = fetch_time_data(unix_start_date, unix_end_date, city_2)" ] diff --git a/notebooks/notebook_compare_statistic_data.ipynb b/notebooks/notebook_compare_statistic_data.ipynb index 77afeb1..9821391 100644 --- a/notebooks/notebook_compare_statistic_data.ipynb +++ b/notebooks/notebook_compare_statistic_data.ipynb @@ -81,6 +81,11 @@ "# User input the city, for the weather\n", "city_2 = input_place()\n", "\n", + "# Cheks that the two cities is not the same\n", + "while city_2.lower() == city_1.lower():\n", + " print(\"The two places must be different\")\n", + " city_2 = input_place()\n", + "\n", "data_city_2, folder = fetch_stat_data(city_2)" ] }, From 7ffe6587e73f2b3bf11297a4fc3358a79090146c Mon Sep 17 00:00:00 2001 From: toravest Date: Fri, 23 May 2025 17:18:01 +0200 Subject: [PATCH 09/21] add seasons for outliers statistic data --- notebooks/notebook_statistic_data.ipynb | 85 ++++++++++++------------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/notebooks/notebook_statistic_data.ipynb b/notebooks/notebook_statistic_data.ipynb index 5ba4d36..d3527e5 100644 --- a/notebooks/notebook_statistic_data.ipynb +++ b/notebooks/notebook_statistic_data.ipynb @@ -357,63 +357,60 @@ "outputs": [], "source": [ "import numpy as np\n", - "import statistics\n", + "import pandas as pd\n", "\n", - "# Ensure 'month_day' is set as the index\n", - "if 'month_day' in df.columns:\n", - " df.set_index('month_day', inplace=True)\n", - "else:\n", - " print('month_day not in')\n", + "df = df.reset_index()\n", "\n", - "# Extract temperature columns\n", - "temp_mean = df['temp.mean_celsius']\n", - "temp_record_min = df['temp.record_min_celsius']\n", - "temp_record_max = df['temp.record_max_celsius']\n", + "# Makes a mask for spring days\n", + "spring = (df['month_day'] >= '03-01') & (df['month_day'] <= '05-31')\n", + "\n", + "# Makes a mask for summer days\n", + "summer = (df['month_day'] >= '06-01') & (df['month_day'] <= '08-31') \n", + "\n", + "# Makes a mask for autumn days\n", + "autumn = (df['month_day'] >= '09-01') & (df['month_day'] <= '11-20')\n", + "\n", + "# Makes a mask for winter days, we need the or statment to get both sides of the calender year\n", + "winter = ((df['month_day'] >= '12-01') & (df['month_day'] <= '12-31')) | ((df['month_day'] >= '01-01') & (df['month_day'] <= '02-29'))\n", "\n", - "# Calculate means\n", - "temp_mean_mean = temp_mean.mean()\n", - "temp_record_min_mean = temp_record_min.mean()\n", - "temp_record_max_mean = temp_record_max.mean()\n", + "seasons = {\n", + " \"spring\": spring,\n", + " \"summer\": summer,\n", + " \"autumn\": autumn,\n", + " \"winter\": winter\n", + " }\n", "\n", - "# Calculate standard deviations\n", - "temp_mean_stdev = statistics.stdev(temp_mean)\n", - "temp_record_min_stdev = statistics.stdev(temp_record_min)\n", - "temp_record_max_stdev = statistics.stdev(temp_record_max)\n", + "def check_outliers(seasons, temp):\n", + " temp_mean = df[temp]\n", "\n", - "# Calculate 3 standard deviation limits\n", - "mean_lower_limit = temp_mean_mean - (temp_mean_stdev * 3)\n", - "mean_upper_limit = temp_mean_mean + (temp_mean_stdev * 3)\n", + " for season_name, season_mask in seasons.items():\n", + " temp_mean_season = temp_mean[season_mask]\n", + " season_mean = temp_mean_season.mean()\n", + " season_stdev = temp_mean_season.std()\n", "\n", - "min_lower_limit = temp_record_min_mean - (temp_record_min_stdev * 3)\n", - "min_upper_limit = temp_record_min_mean + (temp_record_min_stdev * 3)\n", + " upper_limit = season_mean + (season_stdev * 3)\n", + " lower_limit = season_mean - (season_stdev * 3)\n", "\n", - "max_lower_limit = temp_record_max_mean - (temp_record_max_stdev * 3)\n", - "max_upper_limit = temp_record_max_mean + (temp_record_max_stdev * 3)\n", + " outliers_mask = (temp_mean_season > upper_limit) | (temp_mean_season < lower_limit)\n", "\n", - "# Identify outliers\n", - "mean_outliers = df.loc[(df['temp.mean_celsius'] > mean_upper_limit) | (df['temp.mean_celsius'] < mean_lower_limit), 'temp.mean_celsius']\n", - "min_outliers = df.loc[(df['temp.record_min_celsius'] > min_upper_limit) | (df['temp.record_min_celsius'] < min_lower_limit), 'temp.record_min_celsius']\n", - "max_outliers = df.loc[(df['temp.record_max_celsius'] > max_upper_limit) | (df['temp.record_max_celsius'] < max_lower_limit), 'temp.record_max_celsius']\n", + " outlier_index = temp_mean_season.index[outliers_mask]\n", "\n", - "# Print the outliers\n", - "print(\"Outliers in temp.mean_celsius:\")\n", - "print(mean_outliers)\n", + " if 'month_day' in df.columns:\n", + " outliers = df.loc[outlier_index, ['month_day', temp]]\n", + " else:\n", + " outliers = df.loc[outlier_index, temp]\n", "\n", - "print(\"Outliers in temp.record_min_celsius:\")\n", - "print(min_outliers)\n", + " print(season_name)\n", + " print(outliers)\n", "\n", - "print(\"Outliers in temp.record_max_celsius:\")\n", - "print(max_outliers)\n", + " # Replace with NaN\n", + " df.loc[outlier_index, temp] = np.nan\n", "\n", - "# Replace outliers with NaN\n", - "df.loc[(df['temp.mean_celsius'] > mean_upper_limit) | (df['temp.mean_celsius'] < mean_lower_limit), 'temp.mean_celsius'] = np.nan\n", - "df.loc[(df['temp.record_min_celsius'] > min_upper_limit) | (df['temp.record_min_celsius'] < min_lower_limit), 'temp.record_min_celsius'] = np.nan\n", - "df.loc[(df['temp.record_max_celsius'] > max_upper_limit) | (df['temp.record_max_celsius'] < max_lower_limit), 'temp.record_max_celsius'] = np.nan\n", + " df[temp] = df[temp].interpolate(method='linear', limit_direction='both')\n", "\n", - "# Interpolate to replace NaN values with linear interpolation\n", - "df['temp.mean_celsius'] = df['temp.mean_celsius'].interpolate(method='linear', limit_direction='both')\n", - "df['temp.record_min_celsius'] = df['temp.record_min_celsius'].interpolate(method='linear', limit_direction='both')\n", - "df['temp.record_max_celsius'] = df['temp.record_max_celsius'].interpolate(method='linear', limit_direction='both')" + "check_outliers(seasons, 'temp.mean_celsius')\n", + "check_outliers(seasons, 'temp.record_min_celsius')\n", + "check_outliers(seasons, 'temp.max_celsius')" ] }, { From 22394b67f260fda115f85d7a14b86a62ef3e3444 Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 08:01:55 +0200 Subject: [PATCH 10/21] add comments and function documentation notebook_statistic --- notebooks/notebook_statistic_data.ipynb | 61 +++++++++++++++++-------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/notebooks/notebook_statistic_data.ipynb b/notebooks/notebook_statistic_data.ipynb index d3527e5..d6cc41f 100644 --- a/notebooks/notebook_statistic_data.ipynb +++ b/notebooks/notebook_statistic_data.ipynb @@ -209,7 +209,8 @@ "import matplotlib.dates as mdates\n", "\n", "output_folder = \"../data/figures/output_fig_statistic\"\n", - "os.makedirs(output_folder, exist_ok=True) # Create the folder if it doesn't exist\n", + "# Create the folder if it doesn't exist\n", + "os.makedirs(output_folder, exist_ok=True)\n", "\n", "\n", "temp = df['temp.mean_celsius']\n", @@ -380,37 +381,61 @@ " \"winter\": winter\n", " }\n", "\n", - "def check_outliers(seasons, temp):\n", - " temp_mean = df[temp]\n", + "def check_outliers(df, seasons, temp_column):\n", + " '''\n", + " This function takes in the parameters season and temp. Seasons is a list of the different seasons, with masked dates.\n", + " The temp, indicates either the mean temperature, the max measured temp or the lowest measured temperature for each day.\n", + " The function then calculates both the mean and standard deviation based on the temp. Before calculating the upper and\n", + " lower limit with 3 standard deviation away from the mean. Then it uses these values to find the outliers, which is \n", + " either 3 standarddeviation above or below the mean. This is based on the seasons, so for each season, it find the outliers.\n", + " The outliers are then given the nan value, before using interpolate to 'guess' the missing value. Then the outliers are dealt with. \n", + " '''\n", "\n", + " # Finds the temperature in the dataframe according to the inputed value\n", + " temp = df[temp_column]\n", + "\n", + " # Goes through each season, and calcute mean and st.dev and searching for outliers\n", " for season_name, season_mask in seasons.items():\n", - " temp_mean_season = temp_mean[season_mask]\n", - " season_mean = temp_mean_season.mean()\n", - " season_stdev = temp_mean_season.std()\n", "\n", + " # Stores the temperature based on the season mask dates\n", + " temp_season = temp[season_mask]\n", + "\n", + " # Calculates the mean for the season\n", + " season_mean = temp_season.mean()\n", + "\n", + " # Calculates the standard deviation for the season\n", + " season_stdev = temp_season.std()\n", + "\n", + " # Calculates the limits for 3 standard deviation from the mean\n", " upper_limit = season_mean + (season_stdev * 3)\n", " lower_limit = season_mean - (season_stdev * 3)\n", "\n", - " outliers_mask = (temp_mean_season > upper_limit) | (temp_mean_season < lower_limit)\n", + " # Creates a mask for the temperatures above or below the upper/lower limit\n", + " outliers_mask = (temp_season > upper_limit) | (temp_season < lower_limit)\n", "\n", - " outlier_index = temp_mean_season.index[outliers_mask]\n", + " # Gets the index for the outliers\n", + " outlier_index = temp_season.index[outliers_mask].tolist()\n", "\n", + " # Cheks if the 'month_day' column are in the dataframe, and then add it with the output for the outliers\n", " if 'month_day' in df.columns:\n", - " outliers = df.loc[outlier_index, ['month_day', temp]]\n", + " outliers = df.loc[outlier_index, ['month_day', temp_column]]\n", " else:\n", - " outliers = df.loc[outlier_index, temp]\n", + " outliers = df.loc[outlier_index, temp_column]\n", "\n", + " # Prints the season name, before the outliers\n", " print(season_name)\n", " print(outliers)\n", "\n", " # Replace with NaN\n", - " df.loc[outlier_index, temp] = np.nan\n", + " df.loc[outlier_index, temp_column] = np.nan\n", "\n", - " df[temp] = df[temp].interpolate(method='linear', limit_direction='both')\n", + " # Interpolate other missing 'NaN'-values\n", + " df[temp_column] = df[temp_column].interpolate(method='linear', limit_direction='both')\n", "\n", - "check_outliers(seasons, 'temp.mean_celsius')\n", - "check_outliers(seasons, 'temp.record_min_celsius')\n", - "check_outliers(seasons, 'temp.max_celsius')" + "# Runs the funciton for each of the wanted temperature columns in the df\n", + "check_outliers(df, seasons, 'temp.mean_celsius')\n", + "check_outliers(df, seasons, 'temp.record_min_celsius')\n", + "check_outliers(df, seasons, 'temp.max_celsius')" ] }, { @@ -448,8 +473,9 @@ "plt.plot(temp_record_min.index, temp_record_min, color='tab:blue', label='Min Temperature')\n", "\n", "# Customize the x-axis to show ticks and labels only at the start of each month\n", - "plt.gca().xaxis.set_major_locator(mdates.MonthLocator()) \n", - "plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%b')) # Format ticks to show abbreviated month names (e.g., Jan, Feb)\n", + "plt.gca().xaxis.set_major_locator(mdates.MonthLocator())\n", + "# Format ticks to show abbreviated month names (e.g., Jan, Feb)\n", + "plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%b')) \n", "\n", "plt.axhline(y=0, color='black', linewidth=1.5)\n", "\n", @@ -544,7 +570,6 @@ "# Normalize the data for better readability\n", "df_records = pd.json_normalize(data)\n", "\n", - "\n", "# Displays the dataframe\n", "display(df_records)" ] From b6b24bc20f9fe4a27e70c46571bd3a7d363e1e7c Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 10:10:07 +0200 Subject: [PATCH 11/21] add get_unix_timestamp_for_day to date_to_unix.py, and import to notebook --- notebooks/notebook_compare_one_day_data.ipynb | 43 ++++------------ notebooks/notebook_interactive_data.ipynb | 50 ++++++------------- notebooks/notebook_one_day_data.ipynb | 41 +++------------ src/my_package/date_to_unix.py | 39 +++++++++++++++ 4 files changed, 70 insertions(+), 103 deletions(-) diff --git a/notebooks/notebook_compare_one_day_data.ipynb b/notebooks/notebook_compare_one_day_data.ipynb index f52e91e..84922c1 100644 --- a/notebooks/notebook_compare_one_day_data.ipynb +++ b/notebooks/notebook_compare_one_day_data.ipynb @@ -33,39 +33,14 @@ "metadata": {}, "outputs": [], "source": [ - "import datetime\n", - "import time\n", - "\n", - "# Makes a function so the start and end date is the same date, with all hours of that date\n", - "def get_unix_timestamps_for_day():\n", - " date_input = input(\"Choose a date (yyyy, mm, dd): \")\n", - " date_components = date_input.split(\",\")\n", - " year = int(date_components[0])\n", - " month = int(date_components[1])\n", - " day = int(date_components[2])\n", - "\n", - " # Goes through all hours of the day, use %Y-%m-%d etc. from pythons strftime to convert datetime into a readable string \n", - " timestamps = []\n", - " for hour in range(24):\n", - " dt = datetime.datetime(year, month, day, hour, 0)\n", - " unix_timestamp = int(time.mktime(dt.timetuple()))\n", - " timestamps.append((unix_timestamp, dt.strftime('%Y-%m-%d %H:%M:%S'))) \n", - " \n", - " # Prevents from getting data for the current day, or the future\n", - " if dt >= datetime.datetime.now():\n", - " print(\"Failed, cant use future dates\")\n", - "\n", - " # If \n", - " raise ValueError\n", - "\n", - " # Prints the date chosen\n", - " print(f\"Selected date: {year}-{month:02d}-{day:02d}\")\n", - "\n", - " # Prints the timestamp and the date an hour of the day after\n", - " for ts, readable in timestamps:\n", - " print(f\"Unix Timestamp: {ts} -> {readable}\")\n", - " \n", - " return date_input, [ts[0] for ts in timestamps]\n", + "import sys\n", + "import os\n", + "\n", + "# Gets the absolute path to the src folder\n", + "sys.path.append(os.path.abspath(\"../src\"))\n", + "\n", + "# Import function\n", + "from my_package.date_to_unix import get_unix_timestamps_for_day\n", "\n", "date, timestamps = get_unix_timestamps_for_day()" ] @@ -508,7 +483,7 @@ "# Add label for x-axis\n", "ax3.set_xlabel('Datetime')\n", "\n", - "# Save the plot to the data/output_fig folder\n", + "# Save the plot to the 'data/figures/output_fig_compare_one_day' folder\n", "plot_path = os.path.join(output_folder, f\"weather_compare_plot_{city_1}_{city_2}.png\")\n", "# Save the plot as a PNG file\n", "plt.savefig(plot_path)\n", diff --git a/notebooks/notebook_interactive_data.ipynb b/notebooks/notebook_interactive_data.ipynb index 9f248af..c8b1c27 100644 --- a/notebooks/notebook_interactive_data.ipynb +++ b/notebooks/notebook_interactive_data.ipynb @@ -34,39 +34,13 @@ "metadata": {}, "outputs": [], "source": [ - "import datetime\n", - "import time\n", - "\n", - "# Makes a function so the start and end date is the same date, with all hours of that date\n", - "def get_unix_timestamps_for_day():\n", - " date_input = input(\"Choose a date (yyyy, mm, dd): \")\n", - " date_components = date_input.split(\",\")\n", - " year = int(date_components[0])\n", - " month = int(date_components[1])\n", - " day = int(date_components[2])\n", - "\n", - " # Goes through all hours of the day, use %Y-%m-%d etc. from pythons strftime to convert datetime into a readable string \n", - " timestamps = []\n", - " for hour in range(24):\n", - " dt = datetime.datetime(year, month, day, hour, 0)\n", - " unix_timestamp = int(time.mktime(dt.timetuple()))\n", - " timestamps.append((unix_timestamp, dt.strftime('%Y-%m-%d %H:%M:%S'))) \n", - " \n", - " # Prevents from getting data for the current day, or the future\n", - " if dt >= datetime.datetime.now():\n", - " print(\"Failed, cant use future dates\")\n", - "\n", - " # If \n", - " raise ValueError\n", + "import sys\n", + "import os\n", "\n", - " # Prints the date chosen\n", - " print(f\"Selected date: {year}-{month:02d}-{day:02d}\")\n", + "# Gets the absolute path to the src folder\n", + "sys.path.append(os.path.abspath(\"../src\"))\n", "\n", - " # Prints the timestamp and the date an hour of the day after\n", - " for ts, readable in timestamps:\n", - " print(f\"Unix Timestamp: {ts} -> {readable}\")\n", - " \n", - " return date_input, [ts[0] for ts in timestamps]\n", + "from my_package.date_to_unix import get_unix_timestamps_for_day\n", "\n", "date, timestamps = get_unix_timestamps_for_day()" ] @@ -192,7 +166,7 @@ "import ipywidgets as widgets\n", "from IPython.display import display, clear_output\n", "\n", - "# Temperaturedata\n", + "# Temperature data\n", "temp = df['main.temp']\n", "x_axis = df.index\n", "\n", @@ -204,6 +178,11 @@ "dot_size = widgets.IntSlider(value=40, min=10, max=100, step=5, description='Punktstørrelse')\n", "\n", "def plot_temp(show_mean, show_grid, dot_color, mean_color, dot_size):\n", + " '''\n", + " This function creates an interactive plot using jupyter widgets. It makes a scatter diagram of the temperature with the temerature mean dashed line.\n", + " It gives the user oppurtunity to customize color and size of the dots. And weather to show the grid or not, the same with the mean temperature line.\n", + " '''\n", + " \n", " # Where the figure should be saved when exported\n", " output_folder = \"../data/figures/output_fig_interactive\"\n", "\n", @@ -237,18 +216,19 @@ " if show_grid:\n", " plt.grid()\n", "\n", - " # Save the plot to the data/output_fig folder\n", + " # Save the plot to the 'data/figures/output_fig_interactive' folder\n", " plot_path = os.path.join(output_folder, f\"weather_interactive_plot_{city_name}.png\")\n", " # Save the plot as a PNG file\n", " plt.savefig(plot_path)\n", "\n", " plt.legend(loc='upper right')\n", " plt.show()\n", + " plt.close()\n", "\n", "# Collects widgets in a UI (user interface)\n", "ui = widgets.VBox([show_mean, show_grid, dot_color, mean_color, dot_size])\n", "\n", - "# connects widgets to plot-functions\n", + "# Connects widgets to plot-functions\n", "out = widgets.interactive_output(plot_temp, {\n", " 'show_mean': show_mean,\n", " 'show_grid': show_grid,\n", @@ -257,7 +237,7 @@ " 'dot_size': dot_size,\n", "})\n", "\n", - "# show UI and output\n", + "# Show UI and output\n", "display(ui, out)\n" ] } diff --git a/notebooks/notebook_one_day_data.ipynb b/notebooks/notebook_one_day_data.ipynb index 2cf095c..26d6102 100644 --- a/notebooks/notebook_one_day_data.ipynb +++ b/notebooks/notebook_one_day_data.ipynb @@ -34,39 +34,12 @@ "metadata": {}, "outputs": [], "source": [ - "import datetime\n", - "import time\n", - "\n", - "# Makes a function so the start and end date is the same date, with all hours of that date\n", - "def get_unix_timestamps_for_day():\n", - " date_input = input(\"Choose a date (yyyy, mm, dd): \")\n", - " date_components = date_input.split(\",\")\n", - " year = int(date_components[0])\n", - " month = int(date_components[1])\n", - " day = int(date_components[2])\n", - "\n", - " # Goes through all hours of the day, use %Y-%m-%d etc. from pythons strftime to convert datetime into a readable string \n", - " timestamps = []\n", - " for hour in range(24):\n", - " dt = datetime.datetime(year, month, day, hour, 0)\n", - " unix_timestamp = int(time.mktime(dt.timetuple()))\n", - " timestamps.append((unix_timestamp, dt.strftime('%Y-%m-%d %H:%M:%S'))) \n", - " \n", - " # Prevents from getting data for the current day, or the future\n", - " if dt >= datetime.datetime.now():\n", - " print(\"Failed, cant use future dates\")\n", - "\n", - " # If \n", - " raise ValueError\n", - "\n", - " # Prints the date chosen\n", - " print(f\"Selected date: {year}-{month:02d}-{day:02d}\")\n", - "\n", - " # Prints the timestamp and the date an hour of the day after\n", - " for ts, readable in timestamps:\n", - " print(f\"Unix Timestamp: {ts} -> {readable}\")\n", - " \n", - " return date_input, [ts[0] for ts in timestamps]\n", + "import sys\n", + "import os\n", + "\n", + "sys.path.append(os.path.abspath(\"../src\"))\n", + "\n", + "from my_package.date_to_unix import get_unix_timestamps_for_day\n", "\n", "date, timestamps = get_unix_timestamps_for_day()" ] @@ -456,7 +429,7 @@ "# Adjust layout\n", "plt.tight_layout()\n", "\n", - "# Save the plot to the data/output_fig folder\n", + "# Save the plot to the 'data/figures/output_one_day' folder\n", "plot_path = os.path.join(output_folder, f\"weather_data_plot{city_name}.png\")\n", "plt.savefig(plot_path) # Save the plot as a PNG file\n", "\n", diff --git a/src/my_package/date_to_unix.py b/src/my_package/date_to_unix.py index 2520e35..9677d40 100644 --- a/src/my_package/date_to_unix.py +++ b/src/my_package/date_to_unix.py @@ -65,6 +65,45 @@ def from_unix_timestamp(unix_start, unix_end): return start_from_unix, end_from_unix +def get_unix_timestamps_for_day(): + ''' + This function takes an dat input from the user, in this format: 'yyyy, mm, dd'. And then splits the + input into the different elements. Before making a timestamp for each 24 hours of the day. It have an + if-statment that will throw an error if the inputed date is the current or future date, this beacuse + it can not get the data for the whole day. The function will then print all the unix timestamp and + more readable times for all the hours of the wanted day. + ''' + + date_input = input("Choose a date (yyyy, mm, dd): ") + date_components = date_input.split(",") + year = int(date_components[0]) + month = int(date_components[1]) + day = int(date_components[2]) + + # Goes through all hours of the day, use %Y-%m-%d etc. from pythons strftime to convert datetime into a readable string + timestamps = [] + for hour in range(24): + dt = datetime.datetime(year, month, day, hour, 0) + unix_timestamp = int(time.mktime(dt.timetuple())) + timestamps.append((unix_timestamp, dt.strftime('%Y-%m-%d %H:%M:%S'))) + + # Prevents from getting data for the current day, or the future + if dt >= datetime.datetime.now(): + print("Failed, cant use future dates") + + # If + raise ValueError + + # Prints the date chosen + print(f"Selected date: {year}-{month:02d}-{day:02d}") + + # Prints the timestamp and the date an hour of the day after + for ts, readable in timestamps: + print(f"Unix Timestamp: {ts} -> {readable}") + + return date_input, [ts[0] for ts in timestamps] + # This prints the documentation for the functions written inside '''these''' # print(get_unix_timestamp.__doc__) # print(from_unix_timestamp.__doc__) +# print(get_unix_timestamp_for_day.__doc__) From a8ccaea0cf0dc84d462b7393f103eafc824ca3cb Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 10:14:59 +0200 Subject: [PATCH 12/21] change comment fig output folder --- notebooks/notebook_compare_one_week_data.ipynb | 2 +- notebooks/notebook_compare_statistic_data.ipynb | 4 ++-- notebooks/notebook_one_week_data.ipynb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/notebooks/notebook_compare_one_week_data.ipynb b/notebooks/notebook_compare_one_week_data.ipynb index 34a6aa4..066d7f8 100644 --- a/notebooks/notebook_compare_one_week_data.ipynb +++ b/notebooks/notebook_compare_one_week_data.ipynb @@ -515,7 +515,7 @@ "# Add label for x-axis\n", "ax3.set_xlabel('Datetime')\n", "\n", - "# Save the plot to the data/output_fig folder\n", + "# Save the plot to the 'data/figures/output_fig_compare_one_week' folder\n", "plot_path = os.path.join(output_folder, f\"weather_compare_plot_{city_1}_{city_2}.png\")\n", "# Save the plot as a PNG file\n", "plt.savefig(plot_path)\n", diff --git a/notebooks/notebook_compare_statistic_data.ipynb b/notebooks/notebook_compare_statistic_data.ipynb index 9821391..aec67f8 100644 --- a/notebooks/notebook_compare_statistic_data.ipynb +++ b/notebooks/notebook_compare_statistic_data.ipynb @@ -234,7 +234,7 @@ "# Import the kelvin to celsius function\n", "from my_package.util import kelvin_to_celsius\n", "\n", - "output_folder = \"../data/output_fig\"\n", + "output_folder = \"../data/figures/output_fig_compare_statistic\"\n", "os.makedirs(output_folder, exist_ok=True) # Create the folder if it doesn't exist\n", "\n", "both_cities_df['temp.mean_celsius'] = kelvin_to_celsius(both_cities_df['temp.mean'])\n", @@ -354,7 +354,7 @@ "plt.title(f\"Statistic weather data for ({city_1} and {city_2})\")\n", "plt.tight_layout()\n", "\n", - "# Save the plot to the data/output_fig folder\n", + "# Save the plot to the 'data/figures/output_fig_compare_statistic' folder\n", "plot_path = os.path.join(output_folder, f\"mean_temp_plot_{city_1}_{city_2}.png\")\n", "plt.savefig(plot_path) # Save the plot as a PNG file\n", "\n", diff --git a/notebooks/notebook_one_week_data.ipynb b/notebooks/notebook_one_week_data.ipynb index 37cc5e0..8c9b5ea 100644 --- a/notebooks/notebook_one_week_data.ipynb +++ b/notebooks/notebook_one_week_data.ipynb @@ -447,7 +447,7 @@ "# Adjust layout\n", "plt.tight_layout()\n", "\n", - "# Save the plot to the data/output_fig folder\n", + "# Save the plot to the 'data/figures/output_fig_one_week' folder\n", "plot_path = os.path.join(output_folder, f\"weather_data_plot{city_name}.png\")\n", "plt.savefig(plot_path) # Save the plot as a PNG file\n", "\n", From 21c31ad0a517161054e9897abf75cbfed76ec981 Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 10:54:53 +0200 Subject: [PATCH 13/21] change from utc to cest(utc+2) --- notebooks/notebook_current_data.ipynb | 15 +++++++++++---- src/my_package/date_to_unix.py | 14 ++++++++------ src/my_package/util.py | 3 +++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/notebooks/notebook_current_data.ipynb b/notebooks/notebook_current_data.ipynb index 0352dca..0d1a0fb 100644 --- a/notebooks/notebook_current_data.ipynb +++ b/notebooks/notebook_current_data.ipynb @@ -127,6 +127,12 @@ "outputs": [], "source": [ "import pandas as pd\n", + "import sys\n", + "import os\n", + "\n", + "# Gets the absolute path to the src folder\n", + "sys.path.append(os.path.abspath(\"../src\"))\n", + "from my_package.util import CEST_OFFSET\n", "\n", "# Normalize the json-structure, to add better readability\n", "df = pd.json_normalize(data)\n", @@ -149,12 +155,13 @@ "df = df.drop(columns=\"sys.type\")\n", "df = df.drop(columns=\"sys.id\")\n", "\n", + "# Convert 'dt' column from Unix timestamp to datetime and set it as the index\n", + "df['dt'] = pd.to_datetime(df['dt'] + CEST_OFFSET, unit='s')\n", + "\n", "# Change from unix to datetime for sunrise and sunset\n", - "df['sys.sunrise'] = pd.to_datetime(df['sys.sunrise'], unit='s')\n", - "df['sys.sunset'] = pd.to_datetime(df['sys.sunset'], unit='s')\n", + "df['sys.sunrise'] = pd.to_datetime(df['sys.sunrise'] + CEST_OFFSET, unit='s')\n", + "df['sys.sunset'] = pd.to_datetime(df['sys.sunset'] + CEST_OFFSET, unit='s')\n", "\n", - "# Convert 'dt' column from Unix timestamp to datetime and set it as the index\n", - "df['dt'] = pd.to_datetime(df['dt'], unit='s')\n", "df.set_index('dt', inplace=True)\n", "\n", "# Drops the whole column, if all values is 'NaN' value.\n", diff --git a/src/my_package/date_to_unix.py b/src/my_package/date_to_unix.py index 9677d40..78c631d 100644 --- a/src/my_package/date_to_unix.py +++ b/src/my_package/date_to_unix.py @@ -1,7 +1,9 @@ # importing datetime module import datetime import time - +from my_package.util import CEST_OFFSET + + def get_unix_timestamp(): ''' This function will make the user input a start_date and end_date, then return a unix timestamp. @@ -48,8 +50,8 @@ def get_unix_timestamp(): start_date_timestamp = datetime.datetime(start_year, start_month, start_date, start_hour, start_minute) end_date_timestamp = datetime.datetime(end_year, end_month, end_date, end_hour, end_minute) - unix_start = int(time.mktime(start_date_timestamp.timetuple())) - unix_end = int(time.mktime(end_date_timestamp.timetuple())) + unix_start = int(time.mktime(start_date_timestamp.timetuple())) + CEST_OFFSET + unix_end = int(time.mktime(end_date_timestamp.timetuple())) + CEST_OFFSET # return the unix_start and end timestamp return unix_start, unix_end @@ -60,8 +62,8 @@ def from_unix_timestamp(unix_start, unix_end): timestamp to the inserted: yyyy, mm, dd, hh, mm ''' - start_from_unix = datetime.datetime.fromtimestamp(unix_start) - end_from_unix = datetime.datetime.fromtimestamp(unix_end) + start_from_unix = datetime.datetime.fromtimestamp(unix_start - CEST_OFFSET) + end_from_unix = datetime.datetime.fromtimestamp(unix_end - CEST_OFFSET) return start_from_unix, end_from_unix @@ -84,7 +86,7 @@ def get_unix_timestamps_for_day(): timestamps = [] for hour in range(24): dt = datetime.datetime(year, month, day, hour, 0) - unix_timestamp = int(time.mktime(dt.timetuple())) + unix_timestamp = int(time.mktime(dt.timetuple())) + CEST_OFFSET timestamps.append((unix_timestamp, dt.strftime('%Y-%m-%d %H:%M:%S'))) # Prevents from getting data for the current day, or the future diff --git a/src/my_package/util.py b/src/my_package/util.py index 93ac923..0f6294e 100644 --- a/src/my_package/util.py +++ b/src/my_package/util.py @@ -1,6 +1,9 @@ import numpy as np import pandas as pd +# UTC+2, Central European Summer Time +CEST_OFFSET = 2 * 3600 # in seconds + # Function to replace the norcid 'æøå' def replace_nordic(city_name): ''' From 77420ee56e97ea9e3cea1af9c701e557259d62b7 Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 11:06:37 +0200 Subject: [PATCH 14/21] change from march to april data, notebook_regression --- ..._data_mars.json => merged_data_april.json} | 21252 ++++++++-------- notebooks/notebook_regression.ipynb | 6 +- 2 files changed, 10184 insertions(+), 11074 deletions(-) rename data/test/{merged_data_mars.json => merged_data_april.json} (69%) diff --git a/data/test/merged_data_mars.json b/data/test/merged_data_april.json similarity index 69% rename from data/test/merged_data_mars.json rename to data/test/merged_data_april.json index 6204cd2..1fee4d0 100644 --- a/data/test/merged_data_mars.json +++ b/data/test/merged_data_april.json @@ -1,131 +1,110 @@ { - "cnt": 724, + "cnt": 702, "list": [ { - "dt": 1740783600, + "dt": 1743465600, "main": { - "temp": 2.49, - "feels_like": 2.49, - "pressure": 1022, - "humidity": 94, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 5.27, + "feels_like": 5.27, + "pressure": 1025, + "humidity": 80, + "temp_min": 4.95, + "temp_max": 5.55 }, "wind": { "speed": 0.45, - "deg": 145, - "gust": 1.34 + "deg": 135, + "gust": 3.13 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, + "id": 500, "main": "Rain", - "description": "moderate rain", + "description": "light rain", "icon": "10n" } ], "rain": { - "1h": 2.05 + "1h": 0.56 } }, { - "dt": 1740787200, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1021, - "humidity": 95, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.89, - "deg": 158, - "gust": 2.68 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" - } - ] - }, - { - "dt": 1740790800, + "dt": 1743469200, "main": { - "temp": 2.49, - "feels_like": 2.49, - "pressure": 1021, - "humidity": 95, - "temp_min": 2.03, - "temp_max": 2.77 + "temp": 4.97, + "feels_like": 4.97, + "pressure": 1025, + "humidity": 87, + "temp_min": 4.95, + "temp_max": 5.03 }, "wind": { "speed": 0.45, - "deg": 158, - "gust": 0.89 + "deg": 135, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 1.94 + } }, { - "dt": 1740794400, + "dt": 1743472800, "main": { - "temp": 1.94, - "feels_like": -1.39, - "pressure": 1021, - "humidity": 95, - "temp_min": 1.62, - "temp_max": 2.22 + "temp": 5.22, + "feels_like": 5.22, + "pressure": 1026, + "humidity": 86, + "temp_min": 4.99, + "temp_max": 6.03 }, "wind": { - "speed": 3.28, - "deg": 172, - "gust": 2.29 + "speed": 0.45, + "deg": 135, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.56 + } }, { - "dt": 1740798000, + "dt": 1743476400, "main": { - "temp": 1.69, - "feels_like": -1.47, - "pressure": 1021, - "humidity": 95, - "temp_min": 1.03, - "temp_max": 2.22 + "temp": 5.53, + "feels_like": 5.53, + "pressure": 1026, + "humidity": 86, + "temp_min": 5.03, + "temp_max": 5.55 }, "wind": { - "speed": 3, - "deg": 170, - "gust": 2.86 + "speed": 0.45, + "deg": 113, + "gust": 1.34 }, "clouds": { "all": 100 @@ -139,23 +118,23 @@ } ], "rain": { - "1h": 0.25 + "1h": 0.42 } }, { - "dt": 1740801600, + "dt": 1743480000, "main": { - "temp": 1.69, - "feels_like": 1.69, - "pressure": 1020, - "humidity": 95, - "temp_min": 1.03, - "temp_max": 2.22 + "temp": 4.97, + "feels_like": 3.14, + "pressure": 1026, + "humidity": 86, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 1.34 + "speed": 2.2, + "deg": 173, + "gust": 2.82 }, "clouds": { "all": 100 @@ -170,19 +149,19 @@ ] }, { - "dt": 1740805200, + "dt": 1743483600, "main": { - "temp": 1.43, - "feels_like": 1.43, - "pressure": 1019, - "humidity": 95, - "temp_min": 0.51, - "temp_max": 2.22 + "temp": 5.27, + "feels_like": 5.27, + "pressure": 1027, + "humidity": 83, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 1, - "deg": 133, - "gust": 1.64 + "speed": 0.45, + "deg": 203, + "gust": 1.79 }, "clouds": { "all": 100 @@ -192,24 +171,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1740808800, + "dt": 1743487200, "main": { - "temp": 1.13, - "feels_like": 1.13, - "pressure": 1019, - "humidity": 95, - "temp_min": 0.03, - "temp_max": 1.66 + "temp": 5.57, + "feels_like": 5.57, + "pressure": 1027, + "humidity": 80, + "temp_min": 4.95, + "temp_max": 6.11 }, "wind": { - "speed": 1.08, - "deg": 126, - "gust": 1.51 + "speed": 0.45, + "deg": 70, + "gust": 1.79 }, "clouds": { "all": 100 @@ -219,51 +198,54 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1740812400, + "dt": 1743490800, "main": { - "temp": 1.13, - "feels_like": 1.13, - "pressure": 1018, - "humidity": 94, - "temp_min": 0.51, - "temp_max": 1.66 + "temp": 5.27, + "feels_like": 5.27, + "pressure": 1027, + "humidity": 86, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { "speed": 0.45, - "deg": 307, - "gust": 0.89 + "deg": 203, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.5 + } }, { - "dt": 1740816000, + "dt": 1743494400, "main": { - "temp": 1.98, - "feels_like": 1.98, - "pressure": 1017, - "humidity": 90, - "temp_min": 1.03, - "temp_max": 2.77 + "temp": 6.13, + "feels_like": 5.44, + "pressure": 1027, + "humidity": 83, + "temp_min": 5.51, + "temp_max": 6.66 }, "wind": { - "speed": 0.89, - "deg": 150, - "gust": 2.68 + "speed": 1.34, + "deg": 135, + "gust": 3.13 }, "clouds": { "all": 100 @@ -278,19 +260,19 @@ ] }, { - "dt": 1740819600, + "dt": 1743498000, "main": { - "temp": 2.54, - "feels_like": 2.54, - "pressure": 1017, - "humidity": 88, - "temp_min": 1.03, - "temp_max": 3.33 + "temp": 7.54, + "feels_like": 7.04, + "pressure": 1027, + "humidity": 82, + "temp_min": 6.03, + "temp_max": 8.33 }, "wind": { - "speed": 0.89, - "deg": 174, - "gust": 2.68 + "speed": 1.34, + "deg": 135, + "gust": 3.13 }, "clouds": { "all": 100 @@ -305,19 +287,19 @@ ] }, { - "dt": 1740823200, + "dt": 1743501600, "main": { - "temp": 3.91, - "feels_like": 3.91, - "pressure": 1017, - "humidity": 84, - "temp_min": 3.03, - "temp_max": 4.44 + "temp": 8.84, + "feels_like": 8.84, + "pressure": 1027, + "humidity": 79, + "temp_min": 7.03, + "temp_max": 8.84 }, "wind": { "speed": 0.45, - "deg": 203, - "gust": 1.34 + "deg": 158, + "gust": 2.24 }, "clouds": { "all": 100 @@ -332,19 +314,73 @@ ] }, { - "dt": 1740826800, + "dt": 1743505200, "main": { - "temp": 3.6, - "feels_like": 3.6, - "pressure": 1017, - "humidity": 81, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 8.03, + "feels_like": 6.69, + "pressure": 1028, + "humidity": 85, + "temp_min": 8.03, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 158, - "gust": 1.79 + "speed": 2.24, + "deg": 177, + "gust": 1.94 + }, + "clouds": { + "all": 100 + }, + "weather": [ + { + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" + } + ] + }, + { + "dt": 1743508800, + "main": { + "temp": 8.03, + "feels_like": 6.27, + "pressure": 1028, + "humidity": 85, + "temp_min": 8.03, + "temp_max": 8.03 + }, + "wind": { + "speed": 2.81, + "deg": 177, + "gust": 2.33 + }, + "clouds": { + "all": 100 + }, + "weather": [ + { + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" + } + ] + }, + { + "dt": 1743512400, + "main": { + "temp": 9.03, + "feels_like": 7.25, + "pressure": 1028, + "humidity": 87, + "temp_min": 9.03, + "temp_max": 9.03 + }, + "wind": { + "speed": 3.17, + "deg": 200, + "gust": 5.03 }, "clouds": { "all": 100 @@ -358,23 +394,83 @@ } ], "rain": { - "1h": 0.87 + "1h": 0.12 } }, { - "dt": 1740830400, + "dt": 1743516000, "main": { - "temp": 3.91, - "feels_like": 3.91, - "pressure": 1018, - "humidity": 83, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 10.03, + "feels_like": 9.41, + "pressure": 1029, + "humidity": 89, + "temp_min": 10.03, + "temp_max": 10.03 }, "wind": { - "speed": 0.2, - "deg": 255, - "gust": 0.7 + "speed": 3.1, + "deg": 207, + "gust": 4.74 + }, + "clouds": { + "all": 100 + }, + "weather": [ + { + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" + } + ], + "rain": { + "1h": 0.13 + } + }, + { + "dt": 1743519600, + "main": { + "temp": 11.03, + "feels_like": 10.51, + "pressure": 1029, + "humidity": 89, + "temp_min": 11.03, + "temp_max": 11.03 + }, + "wind": { + "speed": 2.98, + "deg": 213, + "gust": 4.95 + }, + "clouds": { + "all": 100 + }, + "weather": [ + { + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" + } + ], + "rain": { + "1h": 0.55 + } + }, + { + "dt": 1743523200, + "main": { + "temp": 10.03, + "feels_like": 9.44, + "pressure": 1029, + "humidity": 90, + "temp_min": 10.03, + "temp_max": 10.03 + }, + "wind": { + "speed": 2.61, + "deg": 203, + "gust": 3.96 }, "clouds": { "all": 100 @@ -392,19 +488,19 @@ } }, { - "dt": 1740834000, + "dt": 1743526800, "main": { - "temp": 4.71, - "feels_like": 4.71, - "pressure": 1018, - "humidity": 76, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 9.95, + "feels_like": 9.95, + "pressure": 1029, + "humidity": 83, + "temp_min": 9.95, + "temp_max": 10.03 }, "wind": { "speed": 0.45, - "deg": 179, - "gust": 3.13 + "deg": 135, + "gust": 1.79 }, "clouds": { "all": 100 @@ -419,18 +515,48 @@ ] }, { - "dt": 1740837600, + "dt": 1743530400, "main": { - "temp": 5.57, - "feels_like": 4.25, - "pressure": 1018, - "humidity": 76, - "temp_min": 4.95, - "temp_max": 6.11 + "temp": 9.95, + "feels_like": 9.95, + "pressure": 1030, + "humidity": 84, + "temp_min": 9.95, + "temp_max": 10.03 }, "wind": { - "speed": 1.79, - "deg": 116, + "speed": 0.45, + "deg": 158, + "gust": 1.79 + }, + "clouds": { + "all": 100 + }, + "weather": [ + { + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" + } + ], + "rain": { + "1h": 0.18 + } + }, + { + "dt": 1743534000, + "main": { + "temp": 9.97, + "feels_like": 9.97, + "pressure": 1030, + "humidity": 85, + "temp_min": 9.95, + "temp_max": 10.03 + }, + "wind": { + "speed": 0.89, + "deg": 180, "gust": 3.13 }, "clouds": { @@ -441,24 +567,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04d" + "icon": "04n" } ] }, { - "dt": 1740841200, + "dt": 1743537600, "main": { - "temp": 5.83, - "feels_like": 3.41, - "pressure": 1018, - "humidity": 77, - "temp_min": 5.51, - "temp_max": 7.03 + "temp": 9.44, + "feels_like": 7.91, + "pressure": 1030, + "humidity": 87, + "temp_min": 9.44, + "temp_max": 12.03 }, "wind": { - "speed": 3.13, - "deg": 248, - "gust": 8.05 + "speed": 2.88, + "deg": 175, + "gust": 1.89 }, "clouds": { "all": 100 @@ -468,81 +594,81 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04d" + "icon": "04n" } ] }, { - "dt": 1740844800, + "dt": 1743541200, "main": { - "temp": 5.53, - "feels_like": 3.38, - "pressure": 1017, - "humidity": 75, - "temp_min": 5.51, - "temp_max": 7.03 + "temp": 11.03, + "feels_like": 10.54, + "pressure": 1030, + "humidity": 90, + "temp_min": 11.03, + "temp_max": 11.03 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 5.81 + "speed": 2.51, + "deg": 174, + "gust": 2.12 }, "clouds": { - "all": 94 + "all": 100 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04d" + "icon": "04n" } ] }, { - "dt": 1740848400, + "dt": 1743544800, "main": { - "temp": 4.44, - "feels_like": 1.74, - "pressure": 1016, - "humidity": 78, - "temp_min": 4.4, - "temp_max": 4.44 + "temp": 9.44, + "feels_like": 8.8, + "pressure": 1030, + "humidity": 85, + "temp_min": 9.44, + "temp_max": 10.03 }, "wind": { - "speed": 3.13, - "deg": 225, - "gust": 7.15 + "speed": 1.71, + "deg": 169, + "gust": 1.48 }, "clouds": { - "all": 77 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1740852000, + "dt": 1743548400, "main": { - "temp": 4.42, - "feels_like": 2.45, - "pressure": 1015, - "humidity": 76, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 9.42, + "feels_like": 9.42, + "pressure": 1030, + "humidity": 83, + "temp_min": 8.03, + "temp_max": 9.44 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 7.15 + "speed": 0.45, + "deg": 135, + "gust": 1.79 }, "clouds": { - "all": 85 + "all": 100 }, "weather": [ { @@ -554,946 +680,886 @@ ] }, { - "dt": 1740855600, + "dt": 1743552000, "main": { - "temp": 4.71, - "feels_like": 3.84, - "pressure": 1015, - "humidity": 72, - "temp_min": 4.4, - "temp_max": 7.03 + "temp": 8.29, + "feels_like": 7.89, + "pressure": 1030, + "humidity": 85, + "temp_min": 8.03, + "temp_max": 8.29 }, "wind": { "speed": 1.34, - "deg": 131, - "gust": 4.02 + "deg": 135, + "gust": 3.13 }, "clouds": { - "all": 91 + "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.84 - } + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" + } + ] }, { - "dt": 1740859200, + "dt": 1743555600, "main": { - "temp": 4.11, - "feels_like": 1.34, - "pressure": 1014, - "humidity": 81, - "temp_min": 3.88, - "temp_max": 5.03 + "temp": 7.73, + "feels_like": 7.25, + "pressure": 1030, + "humidity": 85, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 3.13, - "deg": 134, - "gust": 8.94 + "speed": 1.34, + "deg": 158, + "gust": 1.79 }, "clouds": { "all": 95 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 1.63 - } + ] }, { - "dt": 1740862800, + "dt": 1743559200, "main": { - "temp": 3.86, - "feels_like": 1.79, - "pressure": 1014, + "temp": 7.73, + "feels_like": 7.73, + "pressure": 1030, "humidity": 84, - "temp_min": 3.84, - "temp_max": 5.03 + "temp_min": 7.03, + "temp_max": 7.73 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 6.71 + "speed": 0.45, + "deg": 158, + "gust": 1.79 }, "clouds": { - "all": 97 + "all": 98 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.73 - } + ] }, { - "dt": 1740866400, + "dt": 1743562800, "main": { - "temp": 3.31, - "feels_like": 0.74, - "pressure": 1013, - "humidity": 88, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 7.24, + "feels_like": 7.24, + "pressure": 1030, + "humidity": 86, + "temp_min": 6.62, + "temp_max": 7.77 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 7.6 + "speed": 0.45, + "deg": 135, + "gust": 0.89 }, "clouds": { - "all": 98 + "all": 99 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.87 - } + ] }, { - "dt": 1740870000, + "dt": 1743566400, "main": { - "temp": 1.66, - "feels_like": -1.23, - "pressure": 1013, - "humidity": 92, - "temp_min": 1.66, - "temp_max": 2.73 + "temp": 6.07, + "feels_like": 5.38, + "pressure": 1030, + "humidity": 90, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 6.71 + "speed": 1.34, + "deg": 135, + "gust": 2.24 }, "clouds": { "all": 98 }, "weather": [ { - "id": 602, - "main": "Snow", - "description": "heavy snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 5.16 - } + ] }, { - "dt": 1740873600, + "dt": 1743570000, "main": { - "temp": 2.2, - "feels_like": -0.58, - "pressure": 1012, - "humidity": 92, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 6.98, + "feels_like": 6.41, + "pressure": 1030, + "humidity": 87, + "temp_min": 6.07, + "temp_max": 7.77 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 6.26 + "speed": 1.34, + "deg": 158, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 95 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.56 - } + ] }, { - "dt": 1740877200, + "dt": 1743573600, "main": { - "temp": 1.94, - "feels_like": -1.28, - "pressure": 1011, - "humidity": 93, - "temp_min": 1.62, - "temp_max": 4.03 + "temp": 6.07, + "feels_like": 6.07, + "pressure": 1030, + "humidity": 90, + "temp_min": 6.03, + "temp_max": 6.07 }, "wind": { - "speed": 3.13, - "deg": 165, - "gust": 5.36 + "speed": 0.89, + "deg": 158, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 95 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.27 - } + ] }, { - "dt": 1740880800, + "dt": 1743577200, "main": { - "temp": 2.22, - "feels_like": 0.38, - "pressure": 1010, - "humidity": 93, - "temp_min": 2.18, - "temp_max": 2.22 + "temp": 7.73, + "feels_like": 7.73, + "pressure": 1030, + "humidity": 86, + "temp_min": 7.03, + "temp_max": 7.73 }, "wind": { - "speed": 1.79, - "deg": 163, - "gust": 5.81 + "speed": 0.45, + "deg": 135, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 94 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.71 - } + ] }, { - "dt": 1740884400, + "dt": 1743580800, "main": { - "temp": 2.75, - "feels_like": 0.07, - "pressure": 1009, - "humidity": 94, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 10.03, + "feels_like": 9.28, + "pressure": 1030, + "humidity": 84, + "temp_min": 10.03, + "temp_max": 10.03 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 7.15 + "speed": 1.22, + "deg": 194, + "gust": 0.67 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 3.65 - } + ] }, { - "dt": 1740888000, + "dt": 1743584400, "main": { - "temp": 2.75, - "feels_like": 0.49, - "pressure": 1007, - "humidity": 93, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 13.03, + "feels_like": 12.56, + "pressure": 1030, + "humidity": 83, + "temp_min": 13.03, + "temp_max": 13.03 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 5.36 + "speed": 1.05, + "deg": 159, + "gust": 0.23 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" - } - ], - "rain": { - "1h": 2.73 - } + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" + } + ] }, { - "dt": 1740895200, + "dt": 1743588000, "main": { - "temp": 3.35, - "feels_like": 1.69, - "pressure": 1007, - "humidity": 95, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 10.03, + "feels_like": 9.18, + "pressure": 1030, + "humidity": 80, + "temp_min": 10.03, + "temp_max": 10.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.47 + "speed": 1.01, + "deg": 131, + "gust": 0.05 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 3.05 - } + ] }, { - "dt": 1740898800, + "dt": 1743591600, "main": { - "temp": 4.46, - "feels_like": 2.5, - "pressure": 1007, - "humidity": 93, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 14.03, + "feels_like": 13.55, + "pressure": 1030, + "humidity": 79, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 2.24, - "deg": 287, - "gust": 11.18 + "speed": 0.91, + "deg": 112, + "gust": 0.03 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 502, - "main": "Rain", - "description": "heavy intensity rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 5.01 - } + ] }, { - "dt": 1740902400, + "dt": 1743595200, "main": { - "temp": 4.71, - "feels_like": 3.26, - "pressure": 1007, - "humidity": 93, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 15.03, + "feels_like": 14.65, + "pressure": 1030, + "humidity": 79, + "temp_min": 15.03, + "temp_max": 15.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 5.81 + "speed": 1.16, + "deg": 80, + "gust": 0.15 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 3.99 - } + ] }, { - "dt": 1740906000, + "dt": 1743598800, "main": { - "temp": 4.4, - "feels_like": 2.43, - "pressure": 1009, - "humidity": 93, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 16.03, + "feels_like": 15.75, + "pressure": 1029, + "humidity": 79, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 2.24, - "deg": 270, - "gust": 5.81 + "speed": 1.3, + "deg": 86, + "gust": 0.64 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.73 - } + ] }, { - "dt": 1740909600, + "dt": 1743602400, "main": { - "temp": 4.71, - "feels_like": 2.41, - "pressure": 1009, - "humidity": 92, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 16.03, + "feels_like": 15.75, + "pressure": 1029, + "humidity": 79, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 2.68, - "deg": 101, - "gust": 4.92 + "speed": 1.49, + "deg": 81, + "gust": 1.07 }, "clouds": { - "all": 100 + "all": 85 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.33 - } + ] }, { - "dt": 1740913200, + "dt": 1743606000, "main": { - "temp": 4.71, - "feels_like": 3.84, - "pressure": 1009, - "humidity": 93, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 18.03, + "feels_like": 17.95, + "pressure": 1028, + "humidity": 79, + "temp_min": 18.03, + "temp_max": 18.03 }, "wind": { - "speed": 1.34, - "deg": 148, - "gust": 3.13 + "speed": 1.33, + "deg": 95, + "gust": 1.26 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.37 - } + ] }, { - "dt": 1740916800, + "dt": 1743609600, "main": { - "temp": 5.27, - "feels_like": 3.91, - "pressure": 1008, - "humidity": 94, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 16.03, + "feels_like": 15.8, + "pressure": 1028, + "humidity": 81, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 4.92 + "speed": 0.93, + "deg": 120, + "gust": 1.4 }, "clouds": { - "all": 100 + "all": 92 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.18 - } + ] }, { - "dt": 1740924000, + "dt": 1743613200, "main": { - "temp": 5.57, - "feels_like": 5.57, - "pressure": 1007, - "humidity": 92, - "temp_min": 4.95, - "temp_max": 6.11 + "temp": 14.03, + "feels_like": 13.68, + "pressure": 1027, + "humidity": 84, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.24 + "speed": 0.77, + "deg": 150, + "gust": 1.63 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.95 - } + ] }, { - "dt": 1740927600, + "dt": 1743616800, "main": { - "temp": 5.57, - "feels_like": 5.57, - "pressure": 1007, - "humidity": 92, - "temp_min": 4.95, - "temp_max": 6.11 + "temp": 14.03, + "feels_like": 13.71, + "pressure": 1027, + "humidity": 85, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 0.89, - "deg": 117, - "gust": 2.68 + "speed": 0.74, + "deg": 166, + "gust": 1.44 }, "clouds": { - "all": 100 + "all": 92 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.37 - } + ] }, { - "dt": 1740931200, + "dt": 1743620400, "main": { - "temp": 5.87, - "feels_like": 5.87, - "pressure": 1007, - "humidity": 91, - "temp_min": 4.95, - "temp_max": 6.66 + "temp": 11.03, + "feels_like": 10.46, + "pressure": 1027, + "humidity": 87, + "temp_min": 11.03, + "temp_max": 11.03 }, "wind": { - "speed": 0.89, - "deg": 135, - "gust": 6.71 + "speed": 1.21, + "deg": 200, + "gust": 1.96 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.3 - } + ] }, { - "dt": 1740934800, + "dt": 1743624000, "main": { - "temp": 6.13, - "feels_like": 4.9, - "pressure": 1006, - "humidity": 91, - "temp_min": 5.51, - "temp_max": 6.66 + "temp": 8.29, + "feels_like": 8.29, + "pressure": 1027, + "humidity": 73, + "temp_min": 8.29, + "temp_max": 9.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.02 + "speed": 0.45, + "deg": 158, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 74 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 1 - } + ] }, { - "dt": 1740938400, + "dt": 1743627600, "main": { - "temp": 5.87, - "feels_like": 4.6, - "pressure": 1005, - "humidity": 91, - "temp_min": 4.95, - "temp_max": 6.66 + "temp": 7.73, + "feels_like": 7.22, + "pressure": 1027, + "humidity": 76, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.47 + "speed": 1.37, + "deg": 224, + "gust": 1.94 }, "clouds": { - "all": 100 + "all": 66 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.49 - } + ] }, { - "dt": 1740942000, + "dt": 1743631200, "main": { - "temp": 5.27, - "feels_like": 3.07, - "pressure": 1005, - "humidity": 92, - "temp_min": 4.95, - "temp_max": 7.03 + "temp": 8.33, + "feels_like": 8.33, + "pressure": 1026, + "humidity": 79, + "temp_min": 6.07, + "temp_max": 8.33 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 6.71 + "speed": 1.29, + "deg": 233, + "gust": 2.07 }, "clouds": { - "all": 100 + "all": 64 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 1 - } + ] }, { - "dt": 1740945600, + "dt": 1743634800, "main": { - "temp": 5.27, - "feels_like": 3.91, - "pressure": 1005, - "humidity": 93, - "temp_min": 4.95, - "temp_max": 7.03 + "temp": 5.51, + "feels_like": 5.51, + "pressure": 1026, + "humidity": 82, + "temp_min": 5.51, + "temp_max": 5.51 }, "wind": { - "speed": 1.79, - "deg": 172, - "gust": 4.47 + "speed": 1.31, + "deg": 222, + "gust": 2.12 }, "clouds": { - "all": 100 + "all": 68 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.32 - } + ] }, { - "dt": 1740949200, + "dt": 1743638400, "main": { - "temp": 5.27, - "feels_like": 3.91, - "pressure": 1005, - "humidity": 94, + "temp": 7.77, + "feels_like": 7.77, + "pressure": 1025, + "humidity": 82, "temp_min": 4.95, - "temp_max": 7.03 + "temp_max": 7.77 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 6.71 + "speed": 0.45, + "deg": 135, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 62 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.13 - } + ] }, { - "dt": 1740952800, + "dt": 1743642000, "main": { - "temp": 4.97, - "feels_like": 3.1, - "pressure": 1004, - "humidity": 93, - "temp_min": 4.95, - "temp_max": 7.03 + "temp": 7.22, + "feels_like": 7.22, + "pressure": 1025, + "humidity": 82, + "temp_min": 3.84, + "temp_max": 7.22 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 4.02 + "speed": 0.89, + "deg": 158, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 19 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" } - ], - "rain": { - "1h": 1.33 - } + ] }, { - "dt": 1740956400, + "dt": 1743645600, "main": { - "temp": 4.97, - "feels_like": 4.13, - "pressure": 1003, - "humidity": 92, - "temp_min": 4.95, - "temp_max": 7.03 + "temp": 6.11, + "feels_like": 6.11, + "pressure": 1024, + "humidity": 86, + "temp_min": 3.29, + "temp_max": 6.11 }, "wind": { - "speed": 1.34, - "deg": 75, - "gust": 4.02 + "speed": 0.89, + "deg": 158, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 32 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 1.54 - } + ] }, { - "dt": 1740960000, + "dt": 1743649200, "main": { - "temp": 5.22, - "feels_like": 4.42, - "pressure": 1001, - "humidity": 90, - "temp_min": 4.99, - "temp_max": 7.03 + "temp": 5.02, + "feels_like": 4.19, + "pressure": 1024, + "humidity": 83, + "temp_min": 2.03, + "temp_max": 5.55 }, "wind": { "speed": 1.34, - "deg": 134, - "gust": 4.02 + "deg": 135, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 34 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1740963600, + "dt": 1743652800, "main": { - "temp": 5.53, - "feels_like": 4.21, - "pressure": 1001, - "humidity": 88, - "temp_min": 5.51, - "temp_max": 7.03 - }, - "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.02 + "temp": 3.29, + "feels_like": 3.29, + "pressure": 1024, + "humidity": 83, + "temp_min": 2.03, + "temp_max": 3.29 + }, + "wind": { + "speed": 0.89, + "deg": 158, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 28 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 0.18 - } + ] }, { - "dt": 1740967200, + "dt": 1743656400, "main": { - "temp": 4.97, - "feels_like": 3.56, - "pressure": 1001, - "humidity": 91, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 3.84, + "feels_like": 3.84, + "pressure": 1025, + "humidity": 84, + "temp_min": 1.03, + "temp_max": 3.84 }, "wind": { - "speed": 1.79, - "deg": 167, + "speed": 0.89, + "deg": 225, + "gust": 3.13 + }, + "clouds": { + "all": 25 + }, + "weather": [ + { + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" + } + ] + }, + { + "dt": 1743660000, + "main": { + "temp": 5.51, + "feels_like": 4.74, + "pressure": 1025, + "humidity": 79, + "temp_min": 5.51, + "temp_max": 5.51 + }, + "wind": { + "speed": 1.34, + "deg": 158, "gust": 4.02 }, "clouds": { - "all": 100 + "all": 28 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } - ], - "rain": { - "1h": 0.26 - } + ] }, { - "dt": 1740970800, + "dt": 1743663600, "main": { - "temp": 4.71, - "feels_like": 2.79, - "pressure": 1001, - "humidity": 91, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 6.66, + "feels_like": 6.66, + "pressure": 1026, + "humidity": 85, + "temp_min": 6.62, + "temp_max": 6.66 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 6.26 + "speed": 0.89, + "deg": 248, + "gust": 3.58 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", - "icon": "10n" + "description": "heavy intensity rain", + "icon": "10d" } ], "rain": { - "1h": 0.56 + "1h": 4.21 } }, { - "dt": 1740974400, + "dt": 1743667200, "main": { - "temp": 4.42, - "feels_like": 1.71, - "pressure": 1001, - "humidity": 90, - "temp_min": 4.4, + "temp": 4.97, + "feels_like": 3.1, + "pressure": 1027, + "humidity": 89, + "temp_min": 4.95, "temp_max": 6.03 }, "wind": { - "speed": 3.13, - "deg": 225, - "gust": 6.26 + "speed": 2.24, + "deg": 293, + "gust": 4.92 }, "clouds": { "all": 100 @@ -1503,27 +1569,27 @@ "id": 500, "main": "Rain", "description": "light rain", - "icon": "10n" + "icon": "10d" } ], "rain": { - "1h": 0.32 + "1h": 0.16 } }, { - "dt": 1740978000, + "dt": 1743670800, "main": { - "temp": 3.86, - "feels_like": 2.88, - "pressure": 1002, - "humidity": 90, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 4.71, + "feels_like": 2.79, + "pressure": 1027, + "humidity": 78, + "temp_min": 4.4, + "temp_max": 6.03 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.58 + "speed": 2.24, + "deg": 225, + "gust": 6.71 }, "clouds": { "all": 100 @@ -1533,23 +1599,23 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1740981600, + "dt": 1743674400, "main": { - "temp": 3.86, - "feels_like": 2.88, - "pressure": 1001, - "humidity": 91, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 5.27, + "feels_like": 5.27, + "pressure": 1027, + "humidity": 78, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 1.34, - "deg": 214, + "speed": 0.89, + "deg": 81, "gust": 3.13 }, "clouds": { @@ -1557,90 +1623,81 @@ }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.73 - } + ] }, { - "dt": 1740985200, + "dt": 1743678000, "main": { - "temp": 3.31, - "feels_like": 3.31, - "pressure": 1001, - "humidity": 92, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 7.8, + "feels_like": 6.09, + "pressure": 1028, + "humidity": 65, + "temp_min": 7.03, + "temp_max": 8.33 }, "wind": { - "speed": 0.45, - "deg": 0, - "gust": 2.24 + "speed": 2.68, + "deg": 248, + "gust": 5.36 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.21 - } + ] }, { - "dt": 1740988800, + "dt": 1743681600, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1000, - "humidity": 92, - "temp_min": 3.84, - "temp_max": 4.03 + "temp": 7.8, + "feels_like": 6.09, + "pressure": 1028, + "humidity": 60, + "temp_min": 7.18, + "temp_max": 8.33 }, "wind": { - "speed": 0.89, - "deg": 151, - "gust": 3.13 + "speed": 2.68, + "deg": 248, + "gust": 5.36 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.25 - } + ] }, { - "dt": 1740992400, + "dt": 1743685200, "main": { - "temp": 4.42, - "feels_like": 2.92, - "pressure": 1000, - "humidity": 88, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 6.38, + "feels_like": 4.39, + "pressure": 1028, + "humidity": 65, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.02 + "speed": 2.68, + "deg": 293, + "gust": 6.71 }, "clouds": { "all": 100 @@ -1655,109 +1712,100 @@ ] }, { - "dt": 1740996000, + "dt": 1743688800, "main": { - "temp": 3.82, - "feels_like": 0.99, - "pressure": 1000, - "humidity": 88, - "temp_min": 3.33, - "temp_max": 6.03 + "temp": 5.83, + "feels_like": 3.41, + "pressure": 1029, + "humidity": 69, + "temp_min": 5.51, + "temp_max": 6.11 }, "wind": { "speed": 3.13, - "deg": 225, - "gust": 8.49 + "deg": 270, + "gust": 7.15 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.78 - } + ] }, { - "dt": 1740999600, + "dt": 1743692400, "main": { - "temp": 3.31, - "feels_like": 1.15, - "pressure": 1000, - "humidity": 91, - "temp_min": 3.29, - "temp_max": 4.03 + "temp": 3.86, + "feels_like": 2.88, + "pressure": 1029, + "humidity": 86, + "temp_min": 3.84, + "temp_max": 6.03 }, "wind": { - "speed": 2.24, - "deg": 158, - "gust": 8.05 + "speed": 1.34, + "deg": 248, + "gust": 4.92 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.36 - } + ] }, { - "dt": 1741003200, + "dt": 1743696000, "main": { - "temp": 2.75, - "feels_like": 1, - "pressure": 1000, - "humidity": 91, - "temp_min": 2.73, + "temp": 3.86, + "feels_like": 1.39, + "pressure": 1029, + "humidity": 83, + "temp_min": 3.84, "temp_max": 5.03 }, "wind": { - "speed": 1.79, - "deg": 165, - "gust": 5.81 + "speed": 2.68, + "deg": 270, + "gust": 7.15 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.69 - } + ] }, { - "dt": 1741006800, + "dt": 1743699600, "main": { "temp": 3.31, - "feels_like": 1.64, - "pressure": 1001, - "humidity": 89, + "feels_like": 3.31, + "pressure": 1029, + "humidity": 84, "temp_min": 3.29, "temp_max": 4.03 }, "wind": { - "speed": 1.79, + "speed": 0.89, "deg": 225, - "gust": 4.02 + "gust": 2.24 }, "clouds": { "all": 100 @@ -1771,52 +1819,22 @@ } ], "rain": { - "1h": 0.3 - } - }, - { - "dt": 1741010400, - "main": { - "temp": 1.64, - "feels_like": -1.98, - "pressure": 1000, - "humidity": 91, - "temp_min": 1.62, - "temp_max": 4.03 - }, - "wind": { - "speed": 3.58, - "deg": 248, - "gust": 11.18 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" - } - ], - "snow": { - "1h": 1.68 + "1h": 0.14 } }, { - "dt": 1741014000, + "dt": 1743703200, "main": { "temp": 2.2, - "feels_like": 1, - "pressure": 1000, - "humidity": 91, + "feels_like": 2.2, + "pressure": 1030, + "humidity": 89, "temp_min": 2.18, - "temp_max": 3.03 + "temp_max": 4.03 }, "wind": { - "speed": 1.34, - "deg": 134, + "speed": 0.89, + "deg": 248, "gust": 3.58 }, "clouds": { @@ -1824,63 +1842,60 @@ }, "weather": [ { - "id": 501, + "id": 500, "main": "Rain", - "description": "moderate rain", + "description": "light rain", "icon": "10d" } ], "rain": { - "1h": 1.04 + "1h": 0.14 } }, { - "dt": 1741017600, + "dt": 1743706800, "main": { "temp": 2.2, - "feels_like": 0.36, - "pressure": 999, - "humidity": 91, + "feels_like": 1, + "pressure": 1030, + "humidity": 85, "temp_min": 2.18, "temp_max": 4.03 }, "wind": { - "speed": 1.79, - "deg": 180, - "gust": 5.81 + "speed": 1.34, + "deg": 270, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.21 - } + ] }, { - "dt": 1741021200, + "dt": 1743710400, "main": { - "temp": 3.05, - "feels_like": 0.43, - "pressure": 998, - "humidity": 86, - "temp_min": 2.73, + "temp": 2.2, + "feels_like": 1, + "pressure": 1030, + "humidity": 83, + "temp_min": 2.18, "temp_max": 4.03 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 5.81 + "speed": 1.34, + "deg": 270, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 86 }, "weather": [ { @@ -1891,83 +1906,80 @@ } ], "rain": { - "1h": 0.25 + "1h": 0.38 } }, { - "dt": 1741024800, + "dt": 1743714000, "main": { - "temp": 2.2, - "feels_like": -0.16, - "pressure": 998, - "humidity": 89, + "temp": 2.49, + "feels_like": 1.33, + "pressure": 1030, + "humidity": 82, "temp_min": 2.18, "temp_max": 4.03 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 5.36 + "speed": 1.34, + "deg": 315, + "gust": 4.92 }, "clouds": { - "all": 100 + "all": 81 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 1.76 - } + ] }, { - "dt": 1741028400, + "dt": 1743717600, "main": { - "temp": 1.94, - "feels_like": -0.46, - "pressure": 999, - "humidity": 90, - "temp_min": 1.62, + "temp": 2.75, + "feels_like": 0.07, + "pressure": 1031, + "humidity": 79, + "temp_min": 2.73, "temp_max": 3.03 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 6.26 + "speed": 2.68, + "deg": 270, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 69 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1741032000, + "dt": 1743721200, "main": { "temp": 2.2, "feels_like": -0.58, - "pressure": 998, - "humidity": 89, + "pressure": 1031, + "humidity": 82, "temp_min": 2.18, - "temp_max": 4.03 + "temp_max": 3.03 }, "wind": { "speed": 2.68, - "deg": 203, - "gust": 5.36 + "deg": 293, + "gust": 5.81 }, "clouds": { - "all": 100 + "all": 61 }, "weather": [ { @@ -1978,469 +1990,487 @@ } ], "rain": { - "1h": 0.2 + "1h": 0.96 } }, { - "dt": 1741035600, + "dt": 1743724800, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 998, - "humidity": 89, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 1.64, + "feels_like": -1.25, + "pressure": 1031, + "humidity": 85, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 0.89, - "deg": 225, - "gust": 2.68 + "speed": 2.68, + "deg": 270, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 60 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } ], - "rain": { - "1h": 3.79 + "snow": { + "1h": 0.15 } }, { - "dt": 1741039200, + "dt": 1743728400, "main": { "temp": 1.94, - "feels_like": -0.46, - "pressure": 998, - "humidity": 91, + "feels_like": 1.94, + "pressure": 1031, + "humidity": 84, "temp_min": 1.62, - "temp_max": 2.22 + "temp_max": 3.03 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 8.49 + "speed": 0.89, + "deg": 315, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 58 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.71 - } + ] }, { - "dt": 1741042800, + "dt": 1743732000, "main": { - "temp": 2.2, - "feels_like": 1, - "pressure": 998, - "humidity": 91, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 1.94, + "feels_like": -1.28, + "pressure": 1030, + "humidity": 82, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 1.34, + "speed": 3.13, "deg": 293, - "gust": 3.58 + "gust": 8.05 }, "clouds": { - "all": 100 + "all": 62 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" + } + ] + }, + { + "dt": 1743735600, + "main": { + "temp": 1.34, + "feels_like": -1.61, + "pressure": 1030, + "humidity": 86, + "temp_min": 1.11, + "temp_max": 3.03 + }, + "wind": { + "speed": 2.68, + "deg": 293, + "gust": 6.26 + }, + "clouds": { + "all": 62 + }, + "weather": [ + { + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } ], - "rain": { - "1h": 0.2 + "snow": { + "1h": 0.46 } }, { - "dt": 1741046400, + "dt": 1743739200, "main": { - "temp": 1.89, - "feels_like": -0.95, - "pressure": 998, - "humidity": 85, - "temp_min": 1.66, + "temp": 1.13, + "feels_like": 1.13, + "pressure": 1030, + "humidity": 88, + "temp_min": 0.51, "temp_max": 3.03 }, "wind": { - "speed": 2.68, - "deg": 270, - "gust": 6.71 + "speed": 0.45, + "deg": 182, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 62 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1741050000, + "dt": 1743742800, "main": { - "temp": 2.45, - "feels_like": 0.14, - "pressure": 998, - "humidity": 80, - "temp_min": 2.22, - "temp_max": 4.03 + "temp": 1.09, + "feels_like": -0.26, + "pressure": 1030, + "humidity": 88, + "temp_min": 1.07, + "temp_max": 3.03 }, "wind": { - "speed": 2.24, - "deg": 248, - "gust": 5.36 + "speed": 1.34, + "deg": 225, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 63 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" } ], - "rain": { - "1h": 0.25 + "snow": { + "1h": 0.11 } }, { - "dt": 1741053600, + "dt": 1743746400, "main": { - "temp": 2.75, - "feels_like": 1.62, - "pressure": 999, - "humidity": 78, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 0.83, + "feels_like": 0.83, + "pressure": 1031, + "humidity": 90, + "temp_min": 0.51, + "temp_max": 3.03 }, "wind": { - "speed": 1.34, - "deg": 248, - "gust": 3.13 + "speed": 0.89, + "deg": 270, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 65 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13d" } ], - "rain": { - "1h": 0.13 + "snow": { + "1h": 1.15 } }, { - "dt": 1741057200, + "dt": 1743750000, "main": { - "temp": 2.75, - "feels_like": 1, - "pressure": 999, - "humidity": 77, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 1.38, + "feels_like": 0.07, + "pressure": 1030, + "humidity": 89, + "temp_min": 1.07, + "temp_max": 3.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.47 + "speed": 1.34, + "deg": 270, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 72 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13d" } ], - "rain": { - "1h": 0.11 + "snow": { + "1h": 1.5 } }, { - "dt": 1741060800, + "dt": 1743753600, "main": { - "temp": 2.22, - "feels_like": 0.38, - "pressure": 1000, - "humidity": 79, + "temp": 1.38, + "feels_like": 1.38, + "pressure": 1030, + "humidity": 88, "temp_min": 1.07, - "temp_max": 2.22 + "temp_max": 3.03 }, "wind": { - "speed": 1.79, - "deg": 160, - "gust": 4.92 + "speed": 0.89, + "deg": 146, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 71 }, "weather": [ { "id": 500, "main": "Rain", "description": "light rain", - "icon": "10n" + "icon": "10d" } ], "rain": { - "1h": 0.75 + "1h": 0.25 } }, { - "dt": 1741064400, + "dt": 1743757200, "main": { - "temp": 0.83, - "feels_like": -0.55, - "pressure": 1000, - "humidity": 87, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 1.94, + "feels_like": 0.06, + "pressure": 1030, + "humidity": 86, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.58 + "speed": 1.79, + "deg": 248, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 72 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { - "1h": 0.64 + "rain": { + "1h": 0.28 } }, { - "dt": 1741068000, + "dt": 1743760800, "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 1001, - "humidity": 91, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 2.49, + "feels_like": -0.24, + "pressure": 1030, + "humidity": 86, + "temp_min": 2.18, + "temp_max": 4.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 1.79 + "speed": 2.68, + "deg": 270, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 77 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { - "1h": 0.73 + "rain": { + "1h": 0.46 } }, { - "dt": 1741071600, + "dt": 1743764400, "main": { - "temp": 0.27, - "feels_like": 0.27, - "pressure": 1001, - "humidity": 93, - "temp_min": -0.05, - "temp_max": 2.03 + "temp": 3.6, + "feels_like": 0.73, + "pressure": 1030, + "humidity": 79, + "temp_min": 2.03, + "temp_max": 3.88 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.79 + "speed": 3.13, + "deg": 270, + "gust": 5.81 }, "clouds": { - "all": 100 + "all": 79 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "snow": { - "1h": 1.43 - } + ] }, { - "dt": 1741075200, + "dt": 1743768000, "main": { - "temp": 0.27, - "feels_like": 0.27, - "pressure": 1002, - "humidity": 94, - "temp_min": -0.05, - "temp_max": 2.03 + "temp": 2.49, + "feels_like": 0.18, + "pressure": 1030, + "humidity": 84, + "temp_min": 2.18, + "temp_max": 4.03 }, "wind": { - "speed": 0.89, - "deg": 146, - "gust": 1.34 + "speed": 2.24, + "deg": 293, + "gust": 7.15 }, "clouds": { - "all": 100 + "all": 79 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.9 - } + ] }, { - "dt": 1741078800, + "dt": 1743771600, "main": { - "temp": 0.27, - "feels_like": 0.27, - "pressure": 1003, - "humidity": 94, - "temp_min": -0.05, - "temp_max": 2.03 + "temp": 2.49, + "feels_like": 0.69, + "pressure": 1029, + "humidity": 83, + "temp_min": 2.18, + "temp_max": 4.03 }, "wind": { - "speed": 0.45, - "deg": 147, - "gust": 1.79 + "speed": 1.79, + "deg": 270, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { - "1h": 0.37 + "rain": { + "1h": 0.38 } }, { - "dt": 1741082400, + "dt": 1743775200, "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 1003, - "humidity": 95, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 1.94, + "feels_like": 1.94, + "pressure": 1029, + "humidity": 88, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { "speed": 0.89, - "deg": 130, - "gust": 2.24 + "deg": 19, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } ], - "snow": { - "1h": 0.65 + "rain": { + "1h": 1.1 } }, { - "dt": 1741086000, + "dt": 1743778800, "main": { - "temp": 0.27, - "feels_like": 0.27, - "pressure": 1002, - "humidity": 95, - "temp_min": -0.05, - "temp_max": 1.03 + "temp": 1.38, + "feels_like": 0.07, + "pressure": 1029, + "humidity": 90, + "temp_min": 1.07, + "temp_max": 3.03 }, "wind": { - "speed": 0.89, - "deg": 135, - "gust": 1.79 + "speed": 1.34, + "deg": 225, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 600, + "id": 601, "main": "Snow", - "description": "light snow", + "description": "snow", "icon": "13d" } ], "snow": { - "1h": 0.22 + "1h": 0.51 } }, { - "dt": 1741089600, + "dt": 1743782400, "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 1001, - "humidity": 95, - "temp_min": 0.51, - "temp_max": 1.03 + "temp": 2.2, + "feels_like": 2.2, + "pressure": 1028, + "humidity": 88, + "temp_min": 2.18, + "temp_max": 4.03 }, "wind": { "speed": 0.89, - "deg": 135, + "deg": 180, "gust": 2.24 }, "clouds": { @@ -2448,179 +2478,170 @@ }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { - "1h": 0.82 + "rain": { + "1h": 0.44 } }, { - "dt": 1741093200, + "dt": 1743786000, "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 999, - "humidity": 95, - "temp_min": 0.51, - "temp_max": 1.03 + "temp": 1.94, + "feels_like": 0.06, + "pressure": 1028, + "humidity": 89, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 0.45, - "deg": 143, - "gust": 1.79 + "speed": 1.79, + "deg": 248, + "gust": 4.47 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.52 - } + ] }, { - "dt": 1741096800, + "dt": 1743789600, "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 997, - "humidity": 96, - "temp_min": 0.51, - "temp_max": 1.03 + "temp": 1.89, + "feels_like": -0.52, + "pressure": 1028, + "humidity": 88, + "temp_min": 1.66, + "temp_max": 4.03 }, "wind": { - "speed": 0.45, - "deg": 155, - "gust": 1.34 + "speed": 2.24, + "deg": 270, + "gust": 4.02 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } ], - "snow": { - "1h": 0.6 + "rain": { + "1h": 1.54 } }, { - "dt": 1741100400, + "dt": 1743793200, "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 995, - "humidity": 96, - "temp_min": 0.51, - "temp_max": 1.03 + "temp": 1.64, + "feels_like": -0.81, + "pressure": 1028, + "humidity": 92, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 0.45, - "deg": 145, - "gust": 3.13 + "speed": 2.24, + "deg": 293, + "gust": 5.36 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } ], - "snow": { - "1h": 2.73 + "rain": { + "1h": 1.4 } }, { - "dt": 1741104000, + "dt": 1743796800, "main": { - "temp": 0.53, - "feels_like": -3.07, - "pressure": 993, - "humidity": 96, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 1.94, + "feels_like": 0.06, + "pressure": 1029, + "humidity": 91, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 3.25, - "deg": 95, - "gust": 3.98 + "speed": 1.79, + "deg": 203, + "gust": 2.68 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 1.33 - } + ] }, { - "dt": 1741107600, + "dt": 1743800400, "main": { - "temp": 0.53, - "feels_like": -2.9, - "pressure": 990, - "humidity": 96, - "temp_min": 0.51, + "temp": 1.34, + "feels_like": 0.03, + "pressure": 1029, + "humidity": 87, + "temp_min": 1.11, "temp_max": 3.03 }, "wind": { - "speed": 3.04, - "deg": 92, - "gust": 4.24 + "speed": 1.34, + "deg": 293, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 4.21 - } + ] }, { - "dt": 1741111200, + "dt": 1743804000, "main": { - "temp": 0.83, - "feels_like": 0.83, - "pressure": 988, - "humidity": 96, - "temp_min": 0.51, + "temp": 1.34, + "feels_like": 1.34, + "pressure": 1028, + "humidity": 85, + "temp_min": 1.11, "temp_max": 3.03 }, "wind": { "speed": 0.45, - "deg": 133, + "deg": 315, "gust": 1.79 }, "clouds": { @@ -2628,29 +2649,26 @@ }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.52 - } + ] }, { - "dt": 1741114800, + "dt": 1743807600, "main": { - "temp": 2.22, - "feels_like": 2.22, - "pressure": 988, - "humidity": 96, - "temp_min": 1.07, - "temp_max": 2.22 + "temp": 1.6, + "feels_like": 1.6, + "pressure": 1029, + "humidity": 86, + "temp_min": 1.11, + "temp_max": 3.03 }, "wind": { "speed": 0.89, - "deg": 212, + "deg": 293, "gust": 2.24 }, "clouds": { @@ -2658,123 +2676,111 @@ }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.87 - } + ] }, { - "dt": 1741118400, + "dt": 1743811200, "main": { - "temp": 3.05, - "feels_like": 1.96, - "pressure": 987, - "humidity": 96, - "temp_min": 2.73, - "temp_max": 3.33 + "temp": 1.64, + "feels_like": 1.64, + "pressure": 1029, + "humidity": 87, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 1.34, - "deg": 134, - "gust": 3.58 + "speed": 0.89, + "deg": 270, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.25 - } + ] }, { - "dt": 1741122000, + "dt": 1743814800, "main": { - "temp": 3.6, - "feels_like": 0.73, - "pressure": 989, - "humidity": 94, - "temp_min": 3.03, - "temp_max": 3.88 + "temp": 1.89, + "feels_like": 1.89, + "pressure": 1028, + "humidity": 88, + "temp_min": 1.66, + "temp_max": 3.03 }, "wind": { - "speed": 3.13, - "deg": 225, - "gust": 6.71 + "speed": 0.89, + "deg": 315, + "gust": 2.68 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.97 - } + ] }, { - "dt": 1741125600, + "dt": 1743818400, "main": { - "temp": 3.31, - "feels_like": 0.74, - "pressure": 990, - "humidity": 93, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 1.64, + "feels_like": 1.64, + "pressure": 1028, + "humidity": 89, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 7.6 + "speed": 0.89, + "deg": 315, + "gust": 2.68 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 1.89 - } + ] }, { - "dt": 1741129200, + "dt": 1743822000, "main": { - "temp": 3.05, - "feels_like": 1.96, - "pressure": 990, - "humidity": 94, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 1.64, + "feels_like": 1.64, + "pressure": 1029, + "humidity": 90, + "temp_min": 1.62, + "temp_max": 2.03 }, "wind": { - "speed": 1.34, - "deg": 161, - "gust": 3.58 + "speed": 0.45, + "deg": 293, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { @@ -2786,766 +2792,697 @@ ] }, { - "dt": 1741132800, + "dt": 1743825600, "main": { - "temp": 3.05, - "feels_like": 1.34, - "pressure": 990, - "humidity": 94, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 1.64, + "feels_like": -1.85, + "pressure": 1029, + "humidity": 90, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 3.58 + "speed": 3.41, + "deg": 325, + "gust": 6.3 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 1.6 - } + ] }, { - "dt": 1741136400, + "dt": 1743829200, "main": { - "temp": 2.75, - "feels_like": 1, - "pressure": 990, - "humidity": 93, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 1.64, + "feels_like": 1.64, + "pressure": 1029, + "humidity": 89, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 4.92 + "speed": 0.45, + "deg": 248, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.16 - } + ] }, { - "dt": 1741140000, + "dt": 1743832800, "main": { - "temp": 2.49, - "feels_like": 0.69, - "pressure": 990, - "humidity": 92, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 1.94, + "feels_like": -1.32, + "pressure": 1030, + "humidity": 87, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.47 + "speed": 3.18, + "deg": 303, + "gust": 5.79 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.67 - } + ] }, { - "dt": 1741143600, + "dt": 1743836400, "main": { - "temp": 2.49, - "feels_like": 0.69, - "pressure": 990, - "humidity": 91, + "temp": 2.2, + "feels_like": -1.41, + "pressure": 1030, + "humidity": 87, "temp_min": 2.18, - "temp_max": 5.03 + "temp_max": 4.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.02 + "speed": 3.74, + "deg": 286, + "gust": 5.71 }, "clouds": { - "all": 100 + "all": 91 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1741147200, + "dt": 1743840000, "main": { - "temp": 2.22, - "feels_like": 1.02, - "pressure": 990, - "humidity": 93, - "temp_min": 2.18, - "temp_max": 2.22 + "temp": 2.75, + "feels_like": 2.75, + "pressure": 1030, + "humidity": 83, + "temp_min": 2.73, + "temp_max": 4.03 }, "wind": { - "speed": 1.34, - "deg": 133, - "gust": 4.92 + "speed": 0.45, + "deg": 248, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 81 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1741150800, + "dt": 1743843600, "main": { - "temp": 1.66, - "feels_like": 0.39, - "pressure": 990, - "humidity": 93, - "temp_min": 1.62, - "temp_max": 1.66 + "temp": 3.91, + "feels_like": 2.93, + "pressure": 1031, + "humidity": 81, + "temp_min": 3.29, + "temp_max": 4.44 }, "wind": { "speed": 1.34, - "deg": 169, - "gust": 4.02 + "deg": 270, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 79 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.51 - } + ] }, { - "dt": 1741154400, + "dt": 1743847200, "main": { - "temp": 2.22, - "feels_like": 0.38, - "pressure": 990, - "humidity": 94, - "temp_min": 2.18, - "temp_max": 2.22 + "temp": 4.71, + "feels_like": 4.71, + "pressure": 1030, + "humidity": 76, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { - "speed": 1.79, - "deg": 213, - "gust": 5.81 + "speed": 0.45, + "deg": 315, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 82 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.11 - } + ] }, { - "dt": 1741158000, + "dt": 1743850800, "main": { - "temp": 2.22, - "feels_like": 1.02, - "pressure": 990, - "humidity": 93, - "temp_min": 2.18, - "temp_max": 2.22 + "temp": 4.46, + "feels_like": 3.56, + "pressure": 1030, + "humidity": 78, + "temp_min": 3.84, + "temp_max": 4.99 }, "wind": { "speed": 1.34, - "deg": 136, - "gust": 4.02 + "deg": 270, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 85 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.8 - } + ] }, { - "dt": 1741161600, + "dt": 1743854400, "main": { - "temp": 1.89, - "feels_like": 0.65, - "pressure": 990, - "humidity": 93, - "temp_min": 1.66, - "temp_max": 4.03 + "temp": 4.71, + "feels_like": 4.71, + "pressure": 1030, + "humidity": 80, + "temp_min": 4.4, + "temp_max": 6.03 }, "wind": { - "speed": 1.34, - "deg": 141, - "gust": 4.47 + "speed": 0.89, + "deg": 248, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 87 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.51 - } + ] }, { - "dt": 1741165200, + "dt": 1743858000, "main": { - "temp": 1.89, - "feels_like": 0.65, - "pressure": 990, - "humidity": 94, - "temp_min": 1.66, - "temp_max": 4.03 + "temp": 4.71, + "feels_like": 3.84, + "pressure": 1030, + "humidity": 80, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { "speed": 1.34, - "deg": 203, - "gust": 2.68 + "deg": 145, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.73 - } + ] }, { - "dt": 1741168800, + "dt": 1743861600, "main": { - "temp": 1.64, - "feels_like": 1.64, - "pressure": 990, - "humidity": 95, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 4.42, + "feels_like": 2.92, + "pressure": 1030, + "humidity": 80, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.24 + "speed": 1.79, + "deg": 293, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 95 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 2.99 - } + ] }, { - "dt": 1741172400, + "dt": 1743865200, "main": { - "temp": 1.64, - "feels_like": 0.37, - "pressure": 991, - "humidity": 95, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 4.71, + "feels_like": 3.84, + "pressure": 1030, + "humidity": 81, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { "speed": 1.34, - "deg": 143, - "gust": 3.13 + "deg": 248, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 2.99 - } + ] }, { - "dt": 1741176000, + "dt": 1743868800, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 991, - "humidity": 95, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 4.67, + "feels_like": 3.79, + "pressure": 1030, + "humidity": 84, + "temp_min": 4.44, + "temp_max": 5.03 }, "wind": { - "speed": 0.89, - "deg": 149, - "gust": 2.68 + "speed": 1.34, + "deg": 270, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.06 - } + ] }, { - "dt": 1741179600, + "dt": 1743872400, "main": { - "temp": 2.45, - "feels_like": 2.45, - "pressure": 992, - "humidity": 95, - "temp_min": 2.22, - "temp_max": 4.03 + "temp": 3.86, + "feels_like": 2.88, + "pressure": 1030, + "humidity": 88, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 0.89, - "deg": 180, - "gust": 2.24 + "speed": 1.34, + "deg": 225, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 92 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.37 - } + ] }, { - "dt": 1741183200, + "dt": 1743876000, "main": { - "temp": 2.45, - "feels_like": 2.45, - "pressure": 992, - "humidity": 95, - "temp_min": 2.22, - "temp_max": 4.03 + "temp": 3.86, + "feels_like": 1.79, + "pressure": 1030, + "humidity": 88, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 0.45, - "deg": 236, - "gust": 1.79 + "speed": 2.24, + "deg": 202, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.63 - } + ] }, { - "dt": 1741186800, + "dt": 1743879600, "main": { - "temp": 2.45, - "feels_like": 2.45, - "pressure": 991, - "humidity": 95, - "temp_min": 2.22, - "temp_max": 4.03 + "temp": 4.16, + "feels_like": 2.62, + "pressure": 1030, + "humidity": 86, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 0.45, - "deg": 152, - "gust": 1.79 + "speed": 1.79, + "deg": 270, + "gust": 5.36 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 1.54 - } + ] }, { - "dt": 1741190400, + "dt": 1743883200, "main": { - "temp": 2.75, - "feels_like": 2.75, - "pressure": 991, - "humidity": 95, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 3.86, + "feels_like": 3.86, + "pressure": 1030, + "humidity": 86, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 0.45, - "deg": 150, - "gust": 1.79 + "speed": 0.89, + "deg": 155, + "gust": 2.68 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.15 - } + ] }, { - "dt": 1741194000, + "dt": 1743886800, "main": { - "temp": 2.49, - "feels_like": 2.49, - "pressure": 991, - "humidity": 95, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 3.86, + "feels_like": 2.88, + "pressure": 1030, + "humidity": 85, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 0.45, - "deg": 173, + "speed": 1.34, + "deg": 203, "gust": 2.24 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.05 - } + ] }, { - "dt": 1741197600, + "dt": 1743890400, "main": { - "temp": 2.49, - "feels_like": 1.33, - "pressure": 989, - "humidity": 95, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 3.91, + "feels_like": 3.91, + "pressure": 1030, + "humidity": 84, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 1.34, - "deg": 169, - "gust": 3.13 + "speed": 0.45, + "deg": 131, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 91 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 3.65 - } + ] }, { - "dt": 1741201200, + "dt": 1743894000, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 988, - "humidity": 96, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 3.91, + "feels_like": 3.91, + "pressure": 1030, + "humidity": 84, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { "speed": 0.45, - "deg": 157, - "gust": 0.89 + "deg": 290, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 86 }, "weather": [ { - "id": 502, - "main": "Rain", - "description": "heavy intensity rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 7.49 - } + ] }, { - "dt": 1741204800, + "dt": 1743897600, "main": { - "temp": 2.75, - "feels_like": 2.75, - "pressure": 987, - "humidity": 96, - "temp_min": 2.73, - "temp_max": 3.03 + "temp": 3.86, + "feels_like": 3.86, + "pressure": 1030, + "humidity": 81, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { "speed": 0.89, - "deg": 157, - "gust": 2.68 + "deg": 203, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 82 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.92 - } + ] }, { - "dt": 1741208400, + "dt": 1743897600, "main": { - "temp": 3.91, - "feels_like": 2.34, - "pressure": 987, - "humidity": 96, - "temp_min": 3.03, - "temp_max": 4.44 + "temp": 3.86, + "feels_like": 3.86, + "pressure": 1030, + "humidity": 81, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 1.79, - "deg": 179, - "gust": 3.58 + "speed": 0.89, + "deg": 203, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 82 }, "weather": [ { - "id": 502, - "main": "Rain", - "description": "heavy intensity rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 6.48 - } + ] }, { - "dt": 1741212000, + "dt": 1743901200, "main": { - "temp": 5.27, - "feels_like": 3.07, - "pressure": 986, - "humidity": 96, - "temp_min": 4.95, - "temp_max": 5.55 + "temp": 3.91, + "feels_like": 3.91, + "pressure": 1029, + "humidity": 81, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 2.68, - "deg": 157, - "gust": 6.71 + "speed": 0.89, + "deg": 180, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 73 }, "weather": [ { - "id": 502, - "main": "Rain", - "description": "heavy intensity rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 6.48 - } + ] }, { - "dt": 1741215600, + "dt": 1743904800, "main": { - "temp": 5.83, - "feels_like": 4.11, - "pressure": 986, - "humidity": 94, - "temp_min": 5.51, - "temp_max": 8.03 + "temp": 3.6, + "feels_like": 3.6, + "pressure": 1029, + "humidity": 81, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 2.24, - "deg": 201, - "gust": 6.71 + "speed": 0.45, + "deg": 90, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 82 }, "weather": [ { - "id": 503, - "main": "Rain", - "description": "very heavy rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 17.76 - } + ] }, { - "dt": 1741215600, + "dt": 1743908400, "main": { - "temp": 5.83, - "feels_like": 4.11, - "pressure": 986, - "humidity": 94, - "temp_min": 5.51, - "temp_max": 8.03 + "temp": 3.35, + "feels_like": -0.54, + "pressure": 1029, + "humidity": 83, + "temp_min": 2.73, + "temp_max": 5.03 }, "wind": { - "speed": 2.24, - "deg": 201, - "gust": 6.71 + "speed": 4.64, + "deg": 249, + "gust": 7.29 }, "clouds": { - "all": 100 + "all": 87 }, "weather": [ { - "id": 503, - "main": "Rain", - "description": "very heavy rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 17.76 - } + ] }, { - "dt": 1741219200, + "dt": 1743912000, "main": { - "temp": 7.22, - "feels_like": 6.16, - "pressure": 985, - "humidity": 93, - "temp_min": 6.62, - "temp_max": 7.22 + "temp": 3.31, + "feels_like": 3.31, + "pressure": 1030, + "humidity": 85, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 1.79, - "deg": 100, - "gust": 5.36 + "speed": 0.45, + "deg": 154, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 90 }, "weather": [ { @@ -3557,238 +3494,166 @@ ] }, { - "dt": 1741222800, + "dt": 1743915600, "main": { - "temp": 6.11, - "feels_like": 6.11, - "pressure": 985, - "humidity": 94, - "temp_min": 6.07, - "temp_max": 6.11 + "temp": 3.05, + "feels_like": 3.05, + "pressure": 1029, + "humidity": 84, + "temp_min": 2.73, + "temp_max": 5.03 }, "wind": { "speed": 0.45, - "deg": 124, - "gust": 0.89 + "deg": 134, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 92 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1741226400, + "dt": 1743919200, "main": { - "temp": 7.29, - "feels_like": 6.76, - "pressure": 985, - "humidity": 89, - "temp_min": 6.07, - "temp_max": 8.33 + "temp": 3.31, + "feels_like": 3.31, + "pressure": 1029, + "humidity": 85, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 1.34, - "deg": 335, - "gust": 3.58 + "speed": 0.89, + "deg": 225, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 94 }, "weather": [ { "id": 500, "main": "Rain", "description": "light rain", - "icon": "10n" + "icon": "10d" } ], "rain": { - "1h": 0.16 + "1h": 0.63 } }, { - "dt": 1741230000, + "dt": 1743922800, "main": { - "temp": 9.44, - "feels_like": 7.1, - "pressure": 984, - "humidity": 77, - "temp_min": 9.4, - "temp_max": 9.44 + "temp": 3.26, + "feels_like": 3.26, + "pressure": 1029, + "humidity": 90, + "temp_min": 2.77, + "temp_max": 4.03 }, "wind": { - "speed": 4.47, - "deg": 248, - "gust": 12.07 + "speed": 0.45, + "deg": 0, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.15 + } }, { - "dt": 1741233600, + "dt": 1743926400, "main": { - "temp": 9.99, - "feels_like": 7.79, - "pressure": 984, - "humidity": 64, - "temp_min": 9.95, - "temp_max": 9.99 + "temp": 4.11, + "feels_like": 4.11, + "pressure": 1030, + "humidity": 89, + "temp_min": 3.88, + "temp_max": 4.4 }, "wind": { - "speed": 4.47, + "speed": 0.45, "deg": 270, - "gust": 11.18 + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] - }, - { - "dt": 1741237200, - "main": { - "temp": 9.16, - "feels_like": 6.76, - "pressure": 985, - "humidity": 66, - "temp_min": 8.84, - "temp_max": 10.03 - }, - "wind": { - "speed": 4.47, - "deg": 248, - "gust": 10.73 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" - } - ] - }, - { - "dt": 1741240800, - "main": { - "temp": 8.31, - "feels_like": 5.51, - "pressure": 986, - "humidity": 61, - "temp_min": 8.29, - "temp_max": 9.03 - }, - "wind": { - "speed": 4.92, - "deg": 248, - "gust": 11.62 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" - } - ] - }, - { - "dt": 1741244400, - "main": { - "temp": 8.31, - "feels_like": 5.51, - "pressure": 987, - "humidity": 63, - "temp_min": 8.29, - "temp_max": 9.03 - }, - "wind": { - "speed": 4.92, - "deg": 270, - "gust": 12.96 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" - } - ] + ], + "rain": { + "1h": 2.99 + } }, { - "dt": 1741248000, + "dt": 1743930000, "main": { - "temp": 8.31, - "feels_like": 5.51, - "pressure": 989, - "humidity": 60, - "temp_min": 8.29, - "temp_max": 9.03 + "temp": 4.97, + "feels_like": 4.13, + "pressure": 1030, + "humidity": 87, + "temp_min": 4.95, + "temp_max": 5.03 }, "wind": { - "speed": 4.92, + "speed": 1.34, "deg": 225, - "gust": 12.52 + "gust": 3.58 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.55 + } }, { - "dt": 1741251600, + "dt": 1743933600, "main": { - "temp": 8.31, - "feels_like": 6.14, - "pressure": 992, - "humidity": 59, - "temp_min": 8.29, - "temp_max": 9.03 + "temp": 5.57, + "feels_like": 5.57, + "pressure": 1029, + "humidity": 89, + "temp_min": 4.95, + "temp_max": 6.11 }, "wind": { - "speed": 3.58, + "speed": 0.89, "deg": 248, - "gust": 10.73 + "gust": 1.79 }, "clouds": { "all": 100 @@ -3802,137 +3667,146 @@ } ], "rain": { - "1h": 0.25 + "1h": 0.79 } }, { - "dt": 1741255200, + "dt": 1743937200, "main": { - "temp": 7.75, - "feels_like": 4.46, - "pressure": 995, - "humidity": 59, - "temp_min": 7.73, - "temp_max": 9.03 + "temp": 5.57, + "feels_like": 3.43, + "pressure": 1029, + "humidity": 86, + "temp_min": 4.95, + "temp_max": 6.11 }, "wind": { - "speed": 5.81, + "speed": 2.68, "deg": 270, - "gust": 12.07 + "gust": 6.71 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.64 + } }, { - "dt": 1741258800, + "dt": 1743940800, "main": { - "temp": 7.75, - "feels_like": 4, - "pressure": 998, - "humidity": 64, - "temp_min": 7.73, - "temp_max": 9.03 + "temp": 6.13, + "feels_like": 4.46, + "pressure": 1029, + "humidity": 87, + "temp_min": 5.51, + "temp_max": 6.66 }, "wind": { - "speed": 7.15, - "deg": 270, - "gust": 15.2 + "speed": 2.24, + "deg": 293, + "gust": 4.47 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.58 + } }, { - "dt": 1741262400, + "dt": 1743944400, "main": { - "temp": 6.89, - "feels_like": 3.55, - "pressure": 1000, - "humidity": 70, - "temp_min": 6.66, - "temp_max": 7.18 + "temp": 6.09, + "feels_like": 4.41, + "pressure": 1029, + "humidity": 83, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 5.36, - "deg": 225, - "gust": 11.62 + "speed": 2.24, + "deg": 293, + "gust": 4.92 }, "clouds": { - "all": 100 + "all": 94 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.43 + } }, { - "dt": 1741266000, + "dt": 1743948000, "main": { - "temp": 6.09, - "feels_like": 3.44, - "pressure": 1002, - "humidity": 73, - "temp_min": 6.07, - "temp_max": 7.03 + "temp": 5.48, + "feels_like": 4.71, + "pressure": 1029, + "humidity": 84, + "temp_min": 4.99, + "temp_max": 8.03 }, "wind": { - "speed": 3.58, - "deg": 225, - "gust": 7.6 + "speed": 1.34, + "deg": 293, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], "rain": { - "1h": 0.1 + "1h": 0.46 } }, { - "dt": 1741269600, + "dt": 1743951600, "main": { "temp": 5.53, - "feels_like": 3.38, - "pressure": 1004, - "humidity": 79, + "feels_like": 4.77, + "pressure": 1028, + "humidity": 82, "temp_min": 5.51, - "temp_max": 6.03 + "temp_max": 7.03 }, "wind": { - "speed": 2.68, - "deg": 225, - "gust": 5.81 + "speed": 1.34, + "deg": 180, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 95 }, "weather": [ { @@ -3943,26 +3817,26 @@ } ], "rain": { - "1h": 0.11 + "1h": 0.58 } }, { - "dt": 1741273200, + "dt": 1743955200, "main": { - "temp": 4.97, - "feels_like": 2.38, - "pressure": 1004, - "humidity": 80, - "temp_min": 4.95, + "temp": 5.22, + "feels_like": 5.22, + "pressure": 1028, + "humidity": 83, + "temp_min": 4.99, "temp_max": 6.03 }, "wind": { - "speed": 3.13, - "deg": 248, - "gust": 7.6 + "speed": 0.89, + "deg": 225, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 96 }, "weather": [ { @@ -3973,22 +3847,82 @@ } ], "rain": { - "1h": 0.41 + "1h": 0.71 } }, { - "dt": 1741276800, + "dt": 1743958800, "main": { - "temp": 5.53, - "feels_like": 5.53, - "pressure": 1005, - "humidity": 76, - "temp_min": 5.51, + "temp": 4.97, + "feels_like": 4.97, + "pressure": 1028, + "humidity": 84, + "temp_min": 4.95, + "temp_max": 6.03 + }, + "wind": { + "speed": 0.89, + "deg": 270, + "gust": 2.24 + }, + "clouds": { + "all": 97 + }, + "weather": [ + { + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" + } + ], + "rain": { + "1h": 0.18 + } + }, + { + "dt": 1743962400, + "main": { + "temp": 4.11, + "feels_like": 0.75, + "pressure": 1028, + "humidity": 89, + "temp_min": 3.88, "temp_max": 6.03 }, + "wind": { + "speed": 4.02, + "deg": 267, + "gust": 6.32 + }, + "clouds": { + "all": 98 + }, + "weather": [ + { + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" + } + ], + "rain": { + "1h": 1.33 + } + }, + { + "dt": 1743966000, + "main": { + "temp": 3.86, + "feels_like": 3.86, + "pressure": 1028, + "humidity": 91, + "temp_min": 3.84, + "temp_max": 5.03 + }, "wind": { "speed": 0.89, - "deg": 21, + "deg": 248, "gust": 2.68 }, "clouds": { @@ -3999,51 +3933,54 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04d" + "icon": "04n" } ] }, { - "dt": 1741280400, + "dt": 1743969600, "main": { - "temp": 3.82, - "feels_like": 3.82, - "pressure": 1005, - "humidity": 79, + "temp": 3.56, + "feels_like": 0.05, + "pressure": 1028, + "humidity": 92, "temp_min": 3.33, "temp_max": 5.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 1.79 + "speed": 4.07, + "deg": 269, + "gust": 6.57 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.25 + } }, { - "dt": 1741284000, + "dt": 1743973200, "main": { "temp": 3.31, "feels_like": 3.31, - "pressure": 1005, - "humidity": 81, + "pressure": 1028, + "humidity": 92, "temp_min": 3.29, "temp_max": 5.03 }, "wind": { "speed": 0.45, - "deg": 180, - "gust": 0.89 + "deg": 158, + "gust": 1.34 }, "clouds": { "all": 100 @@ -4058,46 +3995,49 @@ ] }, { - "dt": 1741287600, + "dt": 1743976800, "main": { - "temp": 2.49, - "feels_like": 2.49, - "pressure": 1006, - "humidity": 83, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 3.31, + "feels_like": 3.31, + "pressure": 1028, + "humidity": 93, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { "speed": 0.45, - "deg": 158, - "gust": 1.34 + "deg": 225, + "gust": 0.89 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.92 + } }, { - "dt": 1741291200, + "dt": 1743980400, "main": { - "temp": 2.75, - "feels_like": 2.75, - "pressure": 1006, - "humidity": 84, - "temp_min": 2.73, - "temp_max": 3.03 + "temp": 3.31, + "feels_like": 0.12, + "pressure": 1028, + "humidity": 93, + "temp_min": 3.29, + "temp_max": 4.03 }, "wind": { - "speed": 0.89, - "deg": 135, - "gust": 1.79 + "speed": 3.48, + "deg": 261, + "gust": 4.77 }, "clouds": { "all": 100 @@ -4112,19 +4052,19 @@ ] }, { - "dt": 1741294800, + "dt": 1743984000, "main": { - "temp": 3.6, - "feels_like": 3.6, - "pressure": 1007, - "humidity": 81, - "temp_min": 2.03, - "temp_max": 3.88 + "temp": 3.31, + "feels_like": 0.26, + "pressure": 1028, + "humidity": 94, + "temp_min": 3.29, + "temp_max": 4.03 }, "wind": { - "speed": 0.89, - "deg": 153, - "gust": 3.13 + "speed": 3.28, + "deg": 248, + "gust": 4.18 }, "clouds": { "all": 100 @@ -4139,109 +4079,100 @@ ] }, { - "dt": 1741298400, + "dt": 1743987600, "main": { - "temp": 3.6, - "feels_like": 3.6, - "pressure": 1007, - "humidity": 81, - "temp_min": 2.03, - "temp_max": 3.88 + "temp": 3.31, + "feels_like": 0.03, + "pressure": 1028, + "humidity": 94, + "temp_min": 3.29, + "temp_max": 4.03 }, "wind": { - "speed": 1.09, - "deg": 153, - "gust": 1.41 + "speed": 3.62, + "deg": 224, + "gust": 4.33 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.9 - } + ] }, { - "dt": 1741302000, + "dt": 1743991200, "main": { - "temp": 3.6, - "feels_like": 3.6, - "pressure": 1007, - "humidity": 85, - "temp_min": 2.03, - "temp_max": 3.88 + "temp": 3.31, + "feels_like": 3.31, + "pressure": 1028, + "humidity": 93, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 1.19, - "deg": 125, - "gust": 1.67 + "speed": 0.89, + "deg": 135, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.75 - } + ] }, { - "dt": 1741305600, + "dt": 1743994800, "main": { - "temp": 3.05, - "feels_like": 3.05, - "pressure": 1007, - "humidity": 85, - "temp_min": 2.03, - "temp_max": 3.33 + "temp": 3, + "feels_like": -0.71, + "pressure": 1027, + "humidity": 93, + "temp_min": 2.77, + "temp_max": 5.03 }, "wind": { - "speed": 0.8, - "deg": 70, - "gust": 1.13 + "speed": 4.19, + "deg": 221, + "gust": 4.76 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.15 - } + ] }, { - "dt": 1741309200, + "dt": 1743998400, "main": { - "temp": 3.05, - "feels_like": 1.72, - "pressure": 1006, - "humidity": 87, - "temp_min": 2.73, - "temp_max": 3.33 + "temp": 2.71, + "feels_like": 2.71, + "pressure": 1027, + "humidity": 93, + "temp_min": 2.22, + "temp_max": 5.03 }, "wind": { - "speed": 1.5, - "deg": 77, - "gust": 1.92 + "speed": 0.45, + "deg": 164, + "gust": 1.34 }, "clouds": { "all": 100 @@ -4256,109 +4187,100 @@ ] }, { - "dt": 1741312800, + "dt": 1744002000, "main": { - "temp": 2.8, - "feels_like": 0.38, - "pressure": 1005, - "humidity": 89, - "temp_min": 2.18, - "temp_max": 3.33 + "temp": 2.75, + "feels_like": 2.75, + "pressure": 1027, + "humidity": 93, + "temp_min": 2.73, + "temp_max": 5.03 }, "wind": { - "speed": 2.41, - "deg": 81, - "gust": 3.12 + "speed": 0.45, + "deg": 158, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1 - } + ] }, { - "dt": 1741316400, + "dt": 1744005600, "main": { - "temp": 2.49, - "feels_like": -0.02, - "pressure": 1005, + "temp": 3.6, + "feels_like": 3.6, + "pressure": 1028, "humidity": 92, - "temp_min": 2.18, - "temp_max": 3.03 + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 2.44, - "deg": 80, - "gust": 2.73 + "speed": 0.45, + "deg": 0, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.8 - } + ] }, { - "dt": 1741320000, + "dt": 1744009200, "main": { - "temp": 2.75, - "feels_like": -0.3, - "pressure": 1004, - "humidity": 94, - "temp_min": 2.73, - "temp_max": 3.03 + "temp": 5.02, + "feels_like": 5.02, + "pressure": 1028, + "humidity": 90, + "temp_min": 4.4, + "temp_max": 6.03 }, "wind": { - "speed": 3.13, - "deg": 68, - "gust": 3.75 + "speed": 0.45, + "deg": 158, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.37 - } + ] }, { - "dt": 1741323600, + "dt": 1744012800, "main": { - "temp": 2.49, - "feels_like": -0.63, - "pressure": 1004, - "humidity": 94, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 6.09, + "feels_like": 5.4, + "pressure": 1028, + "humidity": 85, + "temp_min": 6.03, + "temp_max": 6.11 }, "wind": { - "speed": 3.15, - "deg": 72, - "gust": 3.83 + "speed": 1.34, + "deg": 248, + "gust": 3.13 }, "clouds": { "all": 100 @@ -4368,24 +4290,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1741327200, + "dt": 1744016400, "main": { - "temp": 2.49, - "feels_like": -0.75, - "pressure": 1004, - "humidity": 95, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 6.66, + "feels_like": 5.68, + "pressure": 1028, + "humidity": 81, + "temp_min": 6.66, + "temp_max": 7.03 }, "wind": { - "speed": 3.31, - "deg": 77, - "gust": 4.27 + "speed": 1.64, + "deg": 234, + "gust": 1.43 }, "clouds": { "all": 100 @@ -4395,27 +4317,27 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1741330800, + "dt": 1744020000, "main": { - "temp": 2.49, - "feels_like": -0.73, - "pressure": 1003, - "humidity": 95, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 7.8, + "feels_like": 7.8, + "pressure": 1028, + "humidity": 78, + "temp_min": 7.03, + "temp_max": 8.33 }, "wind": { - "speed": 3.28, - "deg": 83, - "gust": 3.79 + "speed": 1.17, + "deg": 203, + "gust": 1.01 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -4427,22 +4349,22 @@ ] }, { - "dt": 1741334400, + "dt": 1744023600, "main": { - "temp": 3.05, - "feels_like": 0.35, - "pressure": 1003, - "humidity": 95, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 7.75, + "feels_like": 7.75, + "pressure": 1028, + "humidity": 75, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 2.77, - "deg": 90, - "gust": 3.43 + "speed": 0.45, + "deg": 293, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { @@ -4454,22 +4376,22 @@ ] }, { - "dt": 1741338000, + "dt": 1744027200, "main": { - "temp": 3.31, - "feels_like": 1.25, - "pressure": 1003, - "humidity": 95, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 7.49, + "feels_like": 7.49, + "pressure": 1028, + "humidity": 74, + "temp_min": 7.03, + "temp_max": 7.77 }, "wind": { - "speed": 2.14, - "deg": 85, - "gust": 2.45 + "speed": 0.89, + "deg": 338, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 85 }, "weather": [ { @@ -4481,22 +4403,22 @@ ] }, { - "dt": 1741341600, + "dt": 1744030800, "main": { - "temp": 3.6, - "feels_like": 1.47, - "pressure": 1003, - "humidity": 95, - "temp_min": 3.29, - "temp_max": 4.03 + "temp": 7.75, + "feels_like": 7.75, + "pressure": 1028, + "humidity": 75, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 2.26, - "deg": 82, - "gust": 2.42 + "speed": 0.89, + "deg": 0, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -4508,22 +4430,22 @@ ] }, { - "dt": 1741345200, + "dt": 1744034400, "main": { - "temp": 4.76, - "feels_like": 2.61, - "pressure": 1002, - "humidity": 92, - "temp_min": 3.84, - "temp_max": 5.55 + "temp": 7.71, + "feels_like": 7.71, + "pressure": 1028, + "humidity": 77, + "temp_min": 7.22, + "temp_max": 8.29 }, "wind": { - "speed": 2.51, - "deg": 79, - "gust": 2.77 + "speed": 0.89, + "deg": 315, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { @@ -4535,22 +4457,22 @@ ] }, { - "dt": 1741348800, + "dt": 1744038000, "main": { - "temp": 6.07, - "feels_like": 6.07, - "pressure": 1002, - "humidity": 91, - "temp_min": 6.07, - "temp_max": 11.03 + "temp": 7.49, + "feels_like": 7.49, + "pressure": 1029, + "humidity": 80, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { "speed": 0.89, - "deg": 248, - "gust": 2.68 + "deg": 23, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -4562,22 +4484,22 @@ ] }, { - "dt": 1741352400, + "dt": 1744041600, "main": { - "temp": 12.03, - "feels_like": 11.61, - "pressure": 1002, - "humidity": 89, - "temp_min": 12.03, - "temp_max": 12.03 + "temp": 6.64, + "feels_like": 6.64, + "pressure": 1028, + "humidity": 85, + "temp_min": 6.62, + "temp_max": 7.03 }, "wind": { - "speed": 2.2, - "deg": 73, - "gust": 2.18 + "speed": 0.45, + "deg": 270, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -4589,22 +4511,22 @@ ] }, { - "dt": 1741356000, + "dt": 1744045200, "main": { - "temp": 11.03, - "feels_like": 10.56, - "pressure": 1002, - "humidity": 91, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 6.34, + "feels_like": 6.34, + "pressure": 1029, + "humidity": 85, + "temp_min": 6.11, + "temp_max": 7.03 }, "wind": { - "speed": 0.94, - "deg": 62, - "gust": 0.76 + "speed": 0.45, + "deg": 0, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -4616,22 +4538,22 @@ ] }, { - "dt": 1741359600, + "dt": 1744048800, "main": { - "temp": 11.03, - "feels_like": 10.56, - "pressure": 1003, - "humidity": 91, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 6.34, + "feels_like": 6.34, + "pressure": 1029, + "humidity": 84, + "temp_min": 6.11, + "temp_max": 7.03 }, "wind": { - "speed": 0.81, - "deg": 242, - "gust": 0.57 + "speed": 0.86, + "deg": 99, + "gust": 1.14 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { @@ -4643,19 +4565,19 @@ ] }, { - "dt": 1741363200, + "dt": 1744052400, "main": { - "temp": 12.03, - "feels_like": 11.69, - "pressure": 1006, - "humidity": 92, - "temp_min": 12.03, - "temp_max": 12.03 + "temp": 5.53, + "feels_like": 5.53, + "pressure": 1029, + "humidity": 86, + "temp_min": 5.51, + "temp_max": 7.03 }, "wind": { - "speed": 4.54, - "deg": 259, - "gust": 9.55 + "speed": 0.43, + "deg": 175, + "gust": 0.73 }, "clouds": { "all": 100 @@ -4665,24 +4587,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04d" + "icon": "04n" } ] }, { - "dt": 1741366800, + "dt": 1744056000, "main": { - "temp": 7.75, - "feels_like": 5.46, - "pressure": 1007, - "humidity": 63, - "temp_min": 7.73, - "temp_max": 8.03 + "temp": 5.27, + "feels_like": 5.27, + "pressure": 1030, + "humidity": 86, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 3.58, - "deg": 248, - "gust": 8.94 + "speed": 0.48, + "deg": 131, + "gust": 0.69 }, "clouds": { "all": 100 @@ -4697,22 +4619,22 @@ ] }, { - "dt": 1741370400, + "dt": 1744059600, "main": { - "temp": 6.09, - "feels_like": 3.19, - "pressure": 1008, - "humidity": 70, - "temp_min": 6.07, - "temp_max": 8.03 + "temp": 4.16, + "feels_like": 4.16, + "pressure": 1030, + "humidity": 88, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 4.02, - "deg": 225, - "gust": 13.86 + "speed": 0.66, + "deg": 108, + "gust": 0.79 }, "clouds": { - "all": 100 + "all": 90 }, "weather": [ { @@ -4724,427 +4646,427 @@ ] }, { - "dt": 1741374000, + "dt": 1744063200, "main": { - "temp": 5.53, - "feels_like": 2.5, - "pressure": 1009, - "humidity": 74, - "temp_min": 5.51, - "temp_max": 7.03 + "temp": 3.35, + "feels_like": 3.35, + "pressure": 1029, + "humidity": 89, + "temp_min": 2.73, + "temp_max": 5.03 }, "wind": { - "speed": 4.02, - "deg": 225, - "gust": 10.73 + "speed": 0.89, + "deg": 96, + "gust": 0.94 }, "clouds": { - "all": 100 + "all": 84 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1741377600, + "dt": 1744066800, "main": { - "temp": 4.97, - "feels_like": 2.38, - "pressure": 1009, - "humidity": 73, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 3.88, + "feels_like": 3.88, + "pressure": 1029, + "humidity": 89, + "temp_min": 3.88, + "temp_max": 5.03 }, "wind": { - "speed": 3.13, - "deg": 225, - "gust": 8.05 + "speed": 1.29, + "deg": 90, + "gust": 1.39 }, "clouds": { - "all": 100 + "all": 77 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1741381200, + "dt": 1744070400, "main": { - "temp": 4.97, - "feels_like": 2.38, - "pressure": 1010, - "humidity": 70, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 3.33, + "feels_like": 3.33, + "pressure": 1029, + "humidity": 91, + "temp_min": 3.03, + "temp_max": 3.33 }, "wind": { - "speed": 3.13, - "deg": 225, - "gust": 6.71 + "speed": 0.45, + "deg": 250, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 66 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1741384800, + "dt": 1744074000, "main": { - "temp": 4.42, - "feels_like": 2.06, - "pressure": 1011, - "humidity": 74, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 2.77, + "feels_like": 2.77, + "pressure": 1029, + "humidity": 91, + "temp_min": 2.03, + "temp_max": 2.77 }, "wind": { - "speed": 2.68, - "deg": 225, - "gust": 7.15 + "speed": 1, + "deg": 83, + "gust": 1.39 }, "clouds": { - "all": 100 + "all": 14 }, "weather": [ { - "id": 804, + "id": 801, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "few clouds", + "icon": "02n" } ] }, { - "dt": 1741388400, + "dt": 1744077600, "main": { - "temp": 4.71, - "feels_like": 2.41, - "pressure": 1011, - "humidity": 75, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 2.77, + "feels_like": 2.77, + "pressure": 1029, + "humidity": 90, + "temp_min": 2.03, + "temp_max": 2.77 }, "wind": { - "speed": 2.68, - "deg": 225, - "gust": 6.26 + "speed": 1.19, + "deg": 89, + "gust": 1.57 }, "clouds": { - "all": 92 + "all": 13 }, "weather": [ { - "id": 804, + "id": 801, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "few clouds", + "icon": "02n" } ] }, { - "dt": 1741392000, + "dt": 1744081200, "main": { - "temp": 4.71, - "feels_like": 1.76, - "pressure": 1011, - "humidity": 73, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 2.22, + "feels_like": 1.02, + "pressure": 1028, + "humidity": 89, + "temp_min": 1.03, + "temp_max": 2.22 }, "wind": { - "speed": 3.58, - "deg": 203, - "gust": 7.6 + "speed": 1.34, + "deg": 110, + "gust": 1.7 }, "clouds": { - "all": 76 + "all": 16 }, "weather": [ { - "id": 803, + "id": 801, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "few clouds", + "icon": "02n" } ] }, { - "dt": 1741395600, + "dt": 1744084800, "main": { - "temp": 4.71, - "feels_like": 2.41, - "pressure": 1012, - "humidity": 65, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 2.22, + "feels_like": 0.76, + "pressure": 1028, + "humidity": 90, + "temp_min": 1.03, + "temp_max": 2.22 }, "wind": { - "speed": 2.68, - "deg": 248, - "gust": 7.15 + "speed": 1.51, + "deg": 141, + "gust": 1.66 }, "clouds": { - "all": 34 + "all": 23 }, "weather": [ { - "id": 802, + "id": 801, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "few clouds", + "icon": "02n" } ] }, { - "dt": 1741399200, + "dt": 1744088400, "main": { - "temp": 4.71, - "feels_like": 1.76, - "pressure": 1013, - "humidity": 75, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 2.22, + "feels_like": 2.22, + "pressure": 1028, + "humidity": 89, + "temp_min": 1.03, + "temp_max": 2.22 }, "wind": { - "speed": 3.58, - "deg": 248, - "gust": 8.94 + "speed": 0.45, + "deg": 132, + "gust": 2.68 }, "clouds": { - "all": 37 + "all": 27 }, "weather": [ { "id": 802, "main": "Clouds", "description": "scattered clouds", - "icon": "03n" + "icon": "03d" } ] }, { - "dt": 1741402800, + "dt": 1744092000, "main": { - "temp": 4.16, - "feels_like": 1.09, - "pressure": 1014, - "humidity": 80, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 4.99, + "feels_like": 3.78, + "pressure": 1028, + "humidity": 83, + "temp_min": 1.03, + "temp_max": 4.99 }, "wind": { - "speed": 3.58, - "deg": 248, - "gust": 8.05 + "speed": 1.62, + "deg": 197, + "gust": 1.97 }, "clouds": { - "all": 41 + "all": 28 }, "weather": [ { "id": 802, "main": "Clouds", "description": "scattered clouds", - "icon": "03n" + "icon": "03d" } ] }, { - "dt": 1741406400, + "dt": 1744095600, "main": { - "temp": 4.16, - "feels_like": 1.4, - "pressure": 1015, - "humidity": 76, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 3.65, + "feels_like": 3.65, + "pressure": 1028, + "humidity": 87, + "temp_min": 2.73, + "temp_max": 4.44 }, "wind": { - "speed": 3.13, - "deg": 248, - "gust": 8.49 + "speed": 0.89, + "deg": 135, + "gust": 2.24 }, "clouds": { - "all": 40 + "all": 50 }, "weather": [ { "id": 802, "main": "Clouds", "description": "scattered clouds", - "icon": "03n" + "icon": "03d" } ] }, { - "dt": 1741410000, + "dt": 1744099200, "main": { - "temp": 4.16, - "feels_like": 2.62, - "pressure": 1015, - "humidity": 73, - "temp_min": 3.84, - "temp_max": 6.03 + "temp": 6.43, + "feels_like": 6.43, + "pressure": 1028, + "humidity": 78, + "temp_min": 5.51, + "temp_max": 7.22 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 4.02 - }, - "clouds": { - "all": 41 + "speed": 0.45, + "deg": 158, + "gust": 1.34 + }, + "clouds": { + "all": 35 }, "weather": [ { "id": 802, "main": "Clouds", "description": "scattered clouds", - "icon": "03n" + "icon": "03d" } ] }, { - "dt": 1741413600, + "dt": 1744102800, "main": { - "temp": 3.86, - "feels_like": 1.79, - "pressure": 1016, - "humidity": 76, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 7.66, + "feels_like": 7.18, + "pressure": 1028, + "humidity": 72, + "temp_min": 6.66, + "temp_max": 8.84 }, "wind": { - "speed": 2.24, + "speed": 1.34, "deg": 225, - "gust": 6.26 + "gust": 3.13 }, "clouds": { - "all": 51 + "all": 37 }, "weather": [ { - "id": 803, + "id": 802, "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1741417200, + "dt": 1744106400, "main": { - "temp": 4.42, - "feels_like": 2.92, - "pressure": 1016, - "humidity": 75, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 8.88, + "feels_like": 8.56, + "pressure": 1028, + "humidity": 70, + "temp_min": 6.03, + "temp_max": 8.88 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 4.47 + "speed": 1.34, + "deg": 267, + "gust": 1.8 }, "clouds": { - "all": 100 + "all": 49 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1741420800, + "dt": 1744110000, "main": { - "temp": 4.71, - "feels_like": 3.84, - "pressure": 1017, - "humidity": 75, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 9.97, + "feels_like": 9.34, + "pressure": 1028, + "humidity": 65, + "temp_min": 8.03, + "temp_max": 9.99 }, "wind": { - "speed": 1.34, - "deg": 128, - "gust": 4.02 + "speed": 1.79, + "deg": 293, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 59 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1741424400, + "dt": 1744113600, "main": { - "temp": 5.78, - "feels_like": 5.05, - "pressure": 1018, - "humidity": 72, - "temp_min": 5.55, - "temp_max": 6.07 + "temp": 8.6, + "feels_like": 7.36, + "pressure": 1028, + "humidity": 74, + "temp_min": 8.29, + "temp_max": 9.03 }, "wind": { - "speed": 1.34, - "deg": 225, - "gust": 3.58 + "speed": 2.24, + "deg": 293, + "gust": 6.26 }, "clouds": { - "all": 100 + "all": 65 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1741428000, + "dt": 1744117200, "main": { - "temp": 5.78, - "feels_like": 4.05, - "pressure": 1018, - "humidity": 68, - "temp_min": 5.55, - "temp_max": 7.03 + "temp": 7.2, + "feels_like": 5.37, + "pressure": 1028, + "humidity": 83, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 5.81 + "speed": 2.68, + "deg": 293, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -5156,22 +5078,22 @@ ] }, { - "dt": 1741431600, + "dt": 1744120800, "main": { - "temp": 6.04, - "feels_like": 4.8, - "pressure": 1019, - "humidity": 68, - "temp_min": 5.55, + "temp": 6.34, + "feels_like": 6.34, + "pressure": 1027, + "humidity": 89, + "temp_min": 6.11, "temp_max": 7.03 }, "wind": { - "speed": 1.79, + "speed": 0.89, "deg": 270, "gust": 3.58 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { @@ -5183,22 +5105,22 @@ ] }, { - "dt": 1741435200, + "dt": 1744124400, "main": { - "temp": 6.11, - "feels_like": 6.11, - "pressure": 1019, - "humidity": 69, - "temp_min": 6.11, + "temp": 6.09, + "feels_like": 6.09, + "pressure": 1027, + "humidity": 88, + "temp_min": 6.07, "temp_max": 7.03 }, "wind": { "speed": 0.89, - "deg": 60, - "gust": 2.24 + "deg": 225, + "gust": 1.79 }, "clouds": { - "all": 97 + "all": 99 }, "weather": [ { @@ -5210,46 +5132,49 @@ ] }, { - "dt": 1741438800, + "dt": 1744128000, "main": { - "temp": 6.64, - "feels_like": 5.06, - "pressure": 1019, - "humidity": 70, - "temp_min": 6.62, - "temp_max": 7.03 + "temp": 6.09, + "feels_like": 6.09, + "pressure": 1027, + "humidity": 88, + "temp_min": 6.03, + "temp_max": 6.11 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 4.02 + "speed": 0.45, + "deg": 248, + "gust": 1.79 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.42 + } }, { - "dt": 1741442400, + "dt": 1744131600, "main": { - "temp": 6.09, - "feels_like": 5.4, - "pressure": 1019, - "humidity": 74, - "temp_min": 6.07, - "temp_max": 7.03 + "temp": 5.53, + "feels_like": 3.76, + "pressure": 1027, + "humidity": 90, + "temp_min": 5.51, + "temp_max": 6.03 }, "wind": { - "speed": 1.34, - "deg": 248, - "gust": 2.68 + "speed": 2.24, + "deg": 270, + "gust": 4.02 }, "clouds": { "all": 100 @@ -5264,76 +5189,82 @@ ] }, { - "dt": 1741446000, + "dt": 1744135200, "main": { - "temp": 5.53, - "feels_like": 5.53, - "pressure": 1018, - "humidity": 77, - "temp_min": 5.51, - "temp_max": 7.03 + "temp": 4.97, + "feels_like": 4.97, + "pressure": 1027, + "humidity": 90, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 0.45, - "deg": 180, - "gust": 1.79 + "speed": 0.89, + "deg": 248, + "gust": 3.13 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.3 + } }, { - "dt": 1741449600, + "dt": 1744138800, "main": { "temp": 4.97, "feels_like": 4.97, - "pressure": 1018, - "humidity": 79, + "pressure": 1027, + "humidity": 91, "temp_min": 4.95, "temp_max": 6.03 }, "wind": { "speed": 0.45, - "deg": 180, - "gust": 1.34 + "deg": 203, + "gust": 0.89 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04d" + "icon": "04n" } - ] + ], + "rain": { + "1h": 0.1 + } }, { - "dt": 1741453200, + "dt": 1744142400, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1019, - "humidity": 83, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 4.71, + "feels_like": 4.71, + "pressure": 1027, + "humidity": 92, + "temp_min": 4.4, + "temp_max": 6.03 }, "wind": { - "speed": 0.45, - "deg": 135, - "gust": 0.89 + "speed": 0.89, + "deg": 225, + "gust": 1.79 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { @@ -5345,22 +5276,22 @@ ] }, { - "dt": 1741456800, + "dt": 1744146000, "main": { - "temp": 3.05, - "feels_like": 3.05, - "pressure": 1019, - "humidity": 85, - "temp_min": 2.73, - "temp_max": 3.33 + "temp": 4.71, + "feels_like": 4.71, + "pressure": 1026, + "humidity": 93, + "temp_min": 4.4, + "temp_max": 6.03 }, "wind": { - "speed": 1.06, - "deg": 227, - "gust": 1.51 + "speed": 0.89, + "deg": 27, + "gust": 3.13 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { @@ -5372,19 +5303,19 @@ ] }, { - "dt": 1741460400, + "dt": 1744149600, "main": { - "temp": 2.54, - "feels_like": 2.54, - "pressure": 1019, - "humidity": 86, - "temp_min": 1.62, - "temp_max": 3.33 + "temp": 4.97, + "feels_like": 4.97, + "pressure": 1026, + "humidity": 93, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 0.2, - "deg": 99, - "gust": 0.77 + "speed": 0.89, + "deg": 186, + "gust": 3.58 }, "clouds": { "all": 100 @@ -5399,19 +5330,19 @@ ] }, { - "dt": 1741464000, + "dt": 1744153200, "main": { - "temp": 2.24, - "feels_like": 0.73, - "pressure": 1018, - "humidity": 87, - "temp_min": 1.62, - "temp_max": 2.77 + "temp": 4.97, + "feels_like": 4.13, + "pressure": 1026, + "humidity": 92, + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 1.55, - "deg": 76, - "gust": 2.07 + "speed": 1.34, + "deg": 117, + "gust": 4.02 }, "clouds": { "all": 100 @@ -5426,19 +5357,19 @@ ] }, { - "dt": 1741467600, + "dt": 1744156800, "main": { - "temp": 1.98, - "feels_like": -0.85, - "pressure": 1018, - "humidity": 87, - "temp_min": 1.07, - "temp_max": 2.77 + "temp": 4.11, + "feels_like": 2.57, + "pressure": 1027, + "humidity": 91, + "temp_min": 3.88, + "temp_max": 6.03 }, "wind": { - "speed": 2.68, - "deg": 70, - "gust": 3.77 + "speed": 1.79, + "deg": 315, + "gust": 4.47 }, "clouds": { "all": 100 @@ -5453,19 +5384,19 @@ ] }, { - "dt": 1741471200, + "dt": 1744160400, "main": { - "temp": 1.98, - "feels_like": -1.5, - "pressure": 1018, - "humidity": 87, - "temp_min": 1.03, - "temp_max": 2.77 + "temp": 2.75, + "feels_like": 0.49, + "pressure": 1028, + "humidity": 90, + "temp_min": 2.73, + "temp_max": 5.03 }, "wind": { - "speed": 3.49, - "deg": 69, - "gust": 4.4 + "speed": 2.24, + "deg": 315, + "gust": 4.92 }, "clouds": { "all": 100 @@ -5480,19 +5411,19 @@ ] }, { - "dt": 1741474800, + "dt": 1744164000, "main": { - "temp": 1.13, - "feels_like": -2.94, - "pressure": 1017, - "humidity": 90, - "temp_min": 0.51, - "temp_max": 1.66 + "temp": 2.2, + "feels_like": 0.36, + "pressure": 1028, + "humidity": 83, + "temp_min": 2.18, + "temp_max": 3.03 }, "wind": { - "speed": 4.06, - "deg": 69, - "gust": 5.01 + "speed": 1.79, + "deg": 338, + "gust": 4.47 }, "clouds": { "all": 100 @@ -5507,19 +5438,19 @@ ] }, { - "dt": 1741478400, + "dt": 1744167600, "main": { - "temp": 1.69, - "feels_like": -2.41, - "pressure": 1017, - "humidity": 89, - "temp_min": 1.03, - "temp_max": 2.22 + "temp": 1.64, + "feels_like": -0.81, + "pressure": 1028, + "humidity": 82, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 4.32, - "deg": 68, - "gust": 5.17 + "speed": 2.24, + "deg": 338, + "gust": 4.92 }, "clouds": { "all": 100 @@ -5534,19 +5465,19 @@ ] }, { - "dt": 1741482000, + "dt": 1744171200, "main": { - "temp": 1.69, - "feels_like": -2.67, - "pressure": 1016, - "humidity": 89, - "temp_min": 1.03, - "temp_max": 2.22 + "temp": 1.64, + "feels_like": 0.37, + "pressure": 1028, + "humidity": 80, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 4.76, - "deg": 62, - "gust": 5.45 + "speed": 1.34, + "deg": 293, + "gust": 3.13 }, "clouds": { "all": 100 @@ -5561,19 +5492,19 @@ ] }, { - "dt": 1741485600, + "dt": 1744174800, "main": { - "temp": 1.38, - "feels_like": -2.67, - "pressure": 1016, - "humidity": 87, - "temp_min": 1.07, - "temp_max": 2.03 + "temp": 1.64, + "feels_like": -0.29, + "pressure": 1028, + "humidity": 80, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 4.13, - "deg": 70, - "gust": 4.87 + "speed": 1.79, + "deg": 293, + "gust": 4.47 }, "clouds": { "all": 100 @@ -5583,204 +5514,189 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1741489200, + "dt": 1744178400, "main": { "temp": 1.64, - "feels_like": -2.47, - "pressure": 1015, - "humidity": 88, - "temp_min": 1.03, - "temp_max": 1.66 + "feels_like": 0.37, + "pressure": 1029, + "humidity": 74, + "temp_min": 1.62, + "temp_max": 2.03 }, "wind": { - "speed": 4.31, - "deg": 67, - "gust": 4.81 + "speed": 1.34, + "deg": 315, + "gust": 3.58 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.12 - } + ] }, { - "dt": 1741492800, + "dt": 1744182000, "main": { - "temp": 1.38, - "feels_like": -2.33, - "pressure": 1015, - "humidity": 89, - "temp_min": 1.07, + "temp": 1.64, + "feels_like": -0.29, + "pressure": 1029, + "humidity": 75, + "temp_min": 1.62, "temp_max": 2.03 }, "wind": { - "speed": 3.63, - "deg": 74, - "gust": 4.45 + "speed": 1.79, + "deg": 338, + "gust": 3.58 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.13 - } + ] }, { - "dt": 1741496400, + "dt": 1744185600, "main": { - "temp": 1.09, - "feels_like": -2.74, - "pressure": 1015, - "humidity": 92, - "temp_min": 1.07, - "temp_max": 2.03 + "temp": 1.94, + "feels_like": -0.46, + "pressure": 1029, + "humidity": 70, + "temp_min": 1.62, + "temp_max": 2.22 }, "wind": { - "speed": 3.7, - "deg": 68, - "gust": 4.19 + "speed": 2.24, + "deg": 315, + "gust": 4.92 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.17 - } + ] }, { - "dt": 1741500000, + "dt": 1744189200, "main": { - "temp": 1.38, - "feels_like": -0.59, - "pressure": 1014, - "humidity": 93, - "temp_min": 1.07, - "temp_max": 2.03 + "temp": 2.24, + "feels_like": -0.54, + "pressure": 1029, + "humidity": 69, + "temp_min": 1.62, + "temp_max": 2.77 }, "wind": { - "speed": 1.79, - "deg": 23, - "gust": 4.02 + "speed": 2.68, + "deg": 315, + "gust": 6.26 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.15 - } + ] }, { - "dt": 1741503600, + "dt": 1744192800, "main": { - "temp": 1.38, - "feels_like": 1.38, - "pressure": 1013, - "humidity": 93, - "temp_min": 1.07, - "temp_max": 2.03 + "temp": 2.2, + "feels_like": 1, + "pressure": 1029, + "humidity": 70, + "temp_min": 2.03, + "temp_max": 2.22 }, "wind": { - "speed": 0.89, - "deg": 23, - "gust": 2.24 - }, - "clouds": { + "speed": 1.34, + "deg": 338, + "gust": 3.58 + }, + "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { + "rain": { "1h": 0.13 } }, { - "dt": 1741507200, + "dt": 1744196400, "main": { - "temp": 1.38, - "feels_like": -0.59, - "pressure": 1013, - "humidity": 94, - "temp_min": 1.07, - "temp_max": 3.03 + "temp": 2.8, + "feels_like": 1.05, + "pressure": 1029, + "humidity": 69, + "temp_min": 2.03, + "temp_max": 3.33 }, "wind": { "speed": 1.79, - "deg": 71, - "gust": 4.02 + "deg": 338, + "gust": 4.47 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.13 - } + ] }, { - "dt": 1741510800, + "dt": 1744200000, "main": { - "temp": 1.94, - "feels_like": -0.46, - "pressure": 1013, - "humidity": 93, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 2.8, + "feels_like": -0.24, + "pressure": 1029, + "humidity": 69, + "temp_min": 2.18, + "temp_max": 3.33 }, "wind": { - "speed": 2.24, - "deg": 23, - "gust": 4.02 + "speed": 3.13, + "deg": 338, + "gust": 5.81 }, "clouds": { "all": 100 @@ -5794,22 +5710,22 @@ } ], "rain": { - "1h": 0.13 + "1h": 0.15 } }, { - "dt": 1741514400, + "dt": 1744203600, "main": { - "temp": 2.2, - "feels_like": 0.36, - "pressure": 1013, - "humidity": 93, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 3.05, + "feels_like": 0.84, + "pressure": 1029, + "humidity": 66, + "temp_min": 2.73, + "temp_max": 3.33 }, "wind": { - "speed": 1.79, - "deg": 41, + "speed": 2.24, + "deg": 315, "gust": 4.92 }, "clouds": { @@ -5828,315 +5744,348 @@ } }, { - "dt": 1741518000, + "dt": 1744207200, "main": { - "temp": 2.2, - "feels_like": -0.16, - "pressure": 1013, - "humidity": 93, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 1.94, + "feels_like": 1.94, + "pressure": 1028, + "humidity": 77, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 2.24, - "deg": 45, - "gust": 4.47 + "speed": 0.89, + "deg": 270, + "gust": 3.58 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.53 + } }, { - "dt": 1741521600, + "dt": 1744210800, "main": { - "temp": 2.75, - "feels_like": 0.07, - "pressure": 1013, - "humidity": 91, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 1.94, + "feels_like": 0.71, + "pressure": 1028, + "humidity": 75, + "temp_min": 1.62, + "temp_max": 3.03 }, "wind": { - "speed": 2.68, - "deg": 23, - "gust": 5.36 + "speed": 1.34, + "deg": 293, + "gust": 3.58 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.23 + } }, { - "dt": 1741525200, + "dt": 1744214400, "main": { - "temp": 3.05, - "feels_like": 1.34, - "pressure": 1013, - "humidity": 90, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 1.38, + "feels_like": 1.38, + "pressure": 1028, + "humidity": 79, + "temp_min": 1.07, + "temp_max": 2.03 }, "wind": { - "speed": 1.79, - "deg": 59, - "gust": 5.36 + "speed": 0.89, + "deg": 315, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.14 + } }, { - "dt": 1741528800, + "dt": 1744218000, "main": { - "temp": 3.33, - "feels_like": 1.17, - "pressure": 1013, - "humidity": 87, - "temp_min": 2.73, - "temp_max": 3.33 + "temp": 1.64, + "feels_like": 0.37, + "pressure": 1028, + "humidity": 75, + "temp_min": 1.62, + "temp_max": 2.03 }, "wind": { - "speed": 2.24, - "deg": 347, - "gust": 5.81 + "speed": 1.34, + "deg": 248, + "gust": 3.58 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.13 + } }, { - "dt": 1741532400, + "dt": 1744221600, "main": { - "temp": 3.31, - "feels_like": 2.26, - "pressure": 1013, - "humidity": 86, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 1.09, + "feels_like": 1.09, + "pressure": 1028, + "humidity": 81, + "temp_min": 1.07, + "temp_max": 2.03 }, "wind": { - "speed": 1.34, - "deg": 45, - "gust": 4.47 + "speed": 0.89, + "deg": 293, + "gust": 2.68 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.56 + } }, { - "dt": 1741536000, + "dt": 1744225200, "main": { - "temp": 3.05, - "feels_like": 1.96, - "pressure": 1013, - "humidity": 85, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 1.09, + "feels_like": 1.09, + "pressure": 1027, + "humidity": 82, + "temp_min": 1.07, + "temp_max": 2.03 }, "wind": { - "speed": 1.34, - "deg": 45, - "gust": 3.58 + "speed": 0.45, + "deg": 248, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } - ] - }, - { - "dt": 1741539600, - "main": { - "temp": 2.75, - "feels_like": 1.62, - "pressure": 1013, - "humidity": 86, - "temp_min": 2.73, - "temp_max": 4.03 + ], + "snow": { + "1h": 0.15 + } + }, + { + "dt": 1744228800, + "main": { + "temp": 0.83, + "feels_like": 0.83, + "pressure": 1027, + "humidity": 85, + "temp_min": 0.51, + "temp_max": 2.03 }, "wind": { - "speed": 1.34, - "deg": 45, - "gust": 2.68 + "speed": 0.45, + "deg": 203, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.13 + } }, { - "dt": 1741543200, + "dt": 1744232400, "main": { - "temp": 2.49, - "feels_like": 1.33, - "pressure": 1013, - "humidity": 85, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": 0.83, + "feels_like": 0.83, + "pressure": 1026, + "humidity": 84, + "temp_min": 0.51, + "temp_max": 2.03 }, "wind": { - "speed": 1.34, - "deg": 45, - "gust": 4.02 + "speed": 0.89, + "deg": 225, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.65 + } }, { - "dt": 1741546800, + "dt": 1744236000, "main": { - "temp": 2.49, - "feels_like": 0.69, - "pressure": 1013, - "humidity": 84, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 0.83, + "feels_like": 0.83, + "pressure": 1025, + "humidity": 86, + "temp_min": 0.51, + "temp_max": 1.11 }, "wind": { - "speed": 1.79, - "deg": 64, - "gust": 4.92 + "speed": 0.89, + "deg": 225, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.21 + } }, { - "dt": 1741550400, + "dt": 1744239600, "main": { - "temp": 1.94, - "feels_like": 1.94, - "pressure": 1013, - "humidity": 85, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 0.53, + "feels_like": 0.53, + "pressure": 1024, + "humidity": 89, + "temp_min": 0.51, + "temp_max": 2.03 }, "wind": { "speed": 0.45, "deg": 0, - "gust": 2.24 + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.4 + } }, { - "dt": 1741554000, + "dt": 1744243200, "main": { - "temp": 1.09, - "feels_like": -0.54, - "pressure": 1013, - "humidity": 88, - "temp_min": 1.07, - "temp_max": 2.03 + "temp": 0.27, + "feels_like": 0.27, + "pressure": 1023, + "humidity": 90, + "temp_min": -0.05, + "temp_max": 1.03 }, "wind": { - "speed": 1.52, - "deg": 23, - "gust": 2.88 + "speed": 0.89, + "deg": 225, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.24 + } }, { - "dt": 1741557600, + "dt": 1744246800, "main": { - "temp": 1.38, - "feels_like": 1.38, - "pressure": 1014, - "humidity": 87, - "temp_min": 1.03, - "temp_max": 1.66 + "temp": -0.03, + "feels_like": -0.03, + "pressure": 1022, + "humidity": 92, + "temp_min": -0.05, + "temp_max": 1.03 }, "wind": { - "speed": 0.45, - "deg": 338, + "speed": 0.89, + "deg": 150, "gust": 1.79 }, "clouds": { @@ -6144,81 +6093,90 @@ }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.13 + } }, { - "dt": 1741561200, + "dt": 1744250400, "main": { - "temp": 1.38, - "feels_like": 1.38, - "pressure": 1013, - "humidity": 86, - "temp_min": 0.03, - "temp_max": 1.66 + "temp": 0.53, + "feels_like": 0.53, + "pressure": 1021, + "humidity": 90, + "temp_min": 0.51, + "temp_max": 2.03 }, "wind": { "speed": 0.89, - "deg": 71, - "gust": 1.79 + "deg": 144, + "gust": 3.13 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 1.33 + } }, { - "dt": 1741564800, + "dt": 1744254000, "main": { - "temp": 1.38, - "feels_like": 0.07, - "pressure": 1013, - "humidity": 87, - "temp_min": 0.03, - "temp_max": 1.66 + "temp": 0.83, + "feels_like": -0.55, + "pressure": 1019, + "humidity": 86, + "temp_min": 0.51, + "temp_max": 2.03 }, "wind": { "speed": 1.34, - "deg": 23, - "gust": 2.68 + "deg": 120, + "gust": 3.13 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.75 + } }, { - "dt": 1741568400, + "dt": 1744257600, "main": { - "temp": 1.38, - "feels_like": 1.38, - "pressure": 1013, - "humidity": 85, - "temp_min": 0.03, - "temp_max": 1.66 + "temp": 1.94, + "feels_like": 0.06, + "pressure": 1017, + "humidity": 79, + "temp_min": 1.62, + "temp_max": 2.22 }, "wind": { - "speed": 0.89, - "deg": 45, - "gust": 1.79 + "speed": 1.79, + "deg": 203, + "gust": 4.47 }, "clouds": { "all": 100 @@ -6233,859 +6191,952 @@ ] }, { - "dt": 1741572000, + "dt": 1744261200, "main": { - "temp": 0.83, - "feels_like": 0.83, - "pressure": 1013, - "humidity": 86, - "temp_min": -0.97, - "temp_max": 1.11 + "temp": 2.77, + "feels_like": 0.51, + "pressure": 1015, + "humidity": 83, + "temp_min": 2.77, + "temp_max": 3.03 }, "wind": { - "speed": 0.89, - "deg": 23, - "gust": 1.79 + "speed": 2.24, + "deg": 102, + "gust": 4.47 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.75 + } }, { - "dt": 1741575600, + "dt": 1744264800, "main": { - "temp": 0.83, - "feels_like": 0.83, - "pressure": 1013, - "humidity": 86, - "temp_min": 0.03, - "temp_max": 1.11 + "temp": 3.05, + "feels_like": 1.34, + "pressure": 1014, + "humidity": 87, + "temp_min": 2.73, + "temp_max": 3.33 }, "wind": { - "speed": 0.45, - "deg": 342, - "gust": 2.24 + "speed": 1.79, + "deg": 293, + "gust": 5.81 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1 + } }, { - "dt": 1741579200, + "dt": 1744268400, "main": { - "temp": 0.83, - "feels_like": 0.83, - "pressure": 1013, - "humidity": 87, - "temp_min": 0.03, - "temp_max": 1.11 + "temp": 3.6, + "feels_like": 1.08, + "pressure": 1012, + "humidity": 91, + "temp_min": 3.29, + "temp_max": 4.03 }, "wind": { - "speed": 0.89, - "deg": 23, - "gust": 2.24 + "speed": 2.68, + "deg": 203, + "gust": 8.49 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.84 + } }, { - "dt": 1741582800, + "dt": 1744272000, "main": { - "temp": 0.27, - "feels_like": 0.27, - "pressure": 1013, - "humidity": 87, - "temp_min": -0.97, - "temp_max": 0.55 + "temp": 4.42, + "feels_like": 2.92, + "pressure": 1011, + "humidity": 91, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { - "speed": 0.94, - "deg": 75, - "gust": 1.13 + "speed": 1.79, + "deg": 303, + "gust": 4.92 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.49 + } }, { - "dt": 1741586400, + "dt": 1744275600, "main": { - "temp": 0.02, - "feels_like": 0.02, - "pressure": 1013, - "humidity": 87, - "temp_min": -0.97, - "temp_max": 0.55 + "temp": 4.97, + "feels_like": 3.1, + "pressure": 1009, + "humidity": 90, + "temp_min": 4.95, + "temp_max": 5.03 }, "wind": { - "speed": 0.89, - "deg": 44, - "gust": 2.24 + "speed": 2.24, + "deg": 212, + "gust": 6.26 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.59 + } }, { - "dt": 1741590000, + "dt": 1744279200, "main": { - "temp": -0.24, - "feels_like": -0.24, - "pressure": 1013, - "humidity": 87, - "temp_min": -1.16, - "temp_max": 0.55 + "temp": 5.57, + "feels_like": 3.43, + "pressure": 1007, + "humidity": 91, + "temp_min": 4.95, + "temp_max": 6.11 }, "wind": { - "speed": 0.89, - "deg": 60, - "gust": 3.13 + "speed": 2.68, + "deg": 117, + "gust": 7.6 }, "clouds": { - "all": 92 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 2.05 + } }, { - "dt": 1741593600, + "dt": 1744282800, "main": { - "temp": 1.13, - "feels_like": -0.21, - "pressure": 1014, - "humidity": 81, - "temp_min": 0.51, - "temp_max": 1.66 + "temp": 5.83, + "feels_like": 3.74, + "pressure": 1007, + "humidity": 90, + "temp_min": 5.51, + "temp_max": 6.11 }, "wind": { - "speed": 1.34, - "deg": 39, - "gust": 3.58 + "speed": 2.68, + "deg": 225, + "gust": 6.71 }, "clouds": { - "all": 69 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.51 + } }, { - "dt": 1741597200, + "dt": 1744286400, "main": { - "temp": 1.69, - "feels_like": 1.69, - "pressure": 1014, - "humidity": 79, - "temp_min": 1.07, - "temp_max": 2.22 + "temp": 6.38, + "feels_like": 4.08, + "pressure": 1006, + "humidity": 91, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 0.89, - "deg": 49, - "gust": 2.68 + "speed": 3.13, + "deg": 225, + "gust": 8.49 }, "clouds": { - "all": 52 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.59 + } }, { - "dt": 1741600800, + "dt": 1744290000, "main": { - "temp": 1.94, - "feels_like": 1.94, - "pressure": 1014, - "humidity": 78, - "temp_min": 1.62, - "temp_max": 2.22 + "temp": 7.2, + "feels_like": 4.33, + "pressure": 1006, + "humidity": 90, + "temp_min": 7.03, + "temp_max": 7.22 }, "wind": { - "speed": 0.89, - "deg": 23, - "gust": 2.24 + "speed": 4.47, + "deg": 248, + "gust": 8.94 }, "clouds": { - "all": 41 + "all": 100 }, "weather": [ { - "id": 802, - "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.13 + } }, { - "dt": 1741604400, + "dt": 1744293600, "main": { - "temp": 2.49, - "feels_like": 1.33, - "pressure": 1014, - "humidity": 74, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 7.2, + "feels_like": 4.79, + "pressure": 1006, + "humidity": 90, + "temp_min": 7.03, + "temp_max": 7.22 }, "wind": { - "speed": 1.34, - "deg": 23, - "gust": 2.24 + "speed": 3.58, + "deg": 270, + "gust": 10.28 }, "clouds": { - "all": 34 + "all": 100 }, "weather": [ { - "id": 802, - "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.25 + } }, { - "dt": 1741608000, + "dt": 1744297200, "main": { - "temp": 3.05, - "feels_like": 1.96, - "pressure": 1014, - "humidity": 71, - "temp_min": 2.73, - "temp_max": 3.33 + "temp": 6.64, + "feels_like": 4.7, + "pressure": 1006, + "humidity": 93, + "temp_min": 6.62, + "temp_max": 7.03 }, "wind": { - "speed": 1.34, - "deg": 23, - "gust": 3.58 + "speed": 2.68, + "deg": 293, + "gust": 8.05 }, "clouds": { - "all": 22 + "all": 100 }, "weather": [ { - "id": 801, - "main": "Clouds", - "description": "few clouds", - "icon": "02d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.78 + } }, { - "dt": 1741611600, + "dt": 1744300800, "main": { - "temp": 3.05, - "feels_like": 3.05, - "pressure": 1013, - "humidity": 69, - "temp_min": 2.73, - "temp_max": 3.33 + "temp": 6.09, + "feels_like": 3.73, + "pressure": 1006, + "humidity": 94, + "temp_min": 6.03, + "temp_max": 6.11 }, "wind": { - "speed": 0.89, - "deg": 23, - "gust": 2.24 + "speed": 3.13, + "deg": 270, + "gust": 6.26 }, "clouds": { - "all": 7 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.33 + } }, { - "dt": 1741615200, + "dt": 1744304400, "main": { - "temp": 2.45, - "feels_like": 2.45, - "pressure": 1013, - "humidity": 69, - "temp_min": 2.22, - "temp_max": 4.03 + "temp": 6.09, + "feels_like": 3.73, + "pressure": 1006, + "humidity": 94, + "temp_min": 6.03, + "temp_max": 6.11 }, "wind": { - "speed": 0.89, - "deg": 45, - "gust": 1.79 + "speed": 3.13, + "deg": 270, + "gust": 6.71 }, "clouds": { - "all": 6 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.33 + } }, { - "dt": 1741618800, + "dt": 1744308000, "main": { - "temp": 1.85, - "feels_like": 1.85, - "pressure": 1013, - "humidity": 69, - "temp_min": 1.11, - "temp_max": 4.03 + "temp": 5.78, + "feels_like": 3.68, + "pressure": 1006, + "humidity": 93, + "temp_min": 5.55, + "temp_max": 6.07 }, "wind": { - "speed": 0.89, - "deg": 23, - "gust": 2.24 + "speed": 2.68, + "deg": 270, + "gust": 6.26 }, "clouds": { - "all": 7 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.73 + } }, { - "dt": 1741622400, + "dt": 1744311600, "main": { - "temp": 1.29, - "feels_like": 1.29, - "pressure": 1013, - "humidity": 72, - "temp_min": 0.55, - "temp_max": 3.03 + "temp": 5.53, + "feels_like": 4.21, + "pressure": 1006, + "humidity": 93, + "temp_min": 5.51, + "temp_max": 6.03 }, "wind": { - "speed": 0.45, - "deg": 23, - "gust": 1.34 + "speed": 1.79, + "deg": 354, + "gust": 6.26 }, "clouds": { - "all": 8 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.73 + } }, { - "dt": 1741626000, + "dt": 1744315200, "main": { - "temp": -0.01, - "feels_like": -0.01, - "pressure": 1013, - "humidity": 77, - "temp_min": -0.01, - "temp_max": 2.03 + "temp": 4.67, + "feels_like": 3.79, + "pressure": 1006, + "humidity": 93, + "temp_min": 4.44, + "temp_max": 6.03 }, "wind": { - "speed": 0.52, - "deg": 122, - "gust": 0.43 + "speed": 1.34, + "deg": 293, + "gust": 3.58 }, "clouds": { - "all": 8 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.52 + } }, { - "dt": 1741629600, + "dt": 1744318800, "main": { - "temp": -0.58, - "feels_like": -0.58, - "pressure": 1013, - "humidity": 78, - "temp_min": -0.6, - "temp_max": 0.03 + "temp": 4.42, + "feels_like": 4.42, + "pressure": 1007, + "humidity": 94, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { - "speed": 0.88, - "deg": 153, - "gust": 1 - }, + "speed": 0.89, + "deg": 315, + "gust": 2.24 + }, "clouds": { - "all": 8 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 5.62 + } }, { - "dt": 1741633200, + "dt": 1744322400, "main": { - "temp": -1.35, - "feels_like": -1.35, - "pressure": 1012, - "humidity": 80, - "temp_min": -2.27, - "temp_max": -0.56 + "temp": 3.31, + "feels_like": 3.31, + "pressure": 1007, + "humidity": 95, + "temp_min": 3.29, + "temp_max": 4.03 }, "wind": { - "speed": 1.22, - "deg": 168, - "gust": 1.35 + "speed": 0.45, + "deg": 270, + "gust": 1.34 }, "clouds": { - "all": 19 + "all": 100 }, "weather": [ { - "id": 801, - "main": "Clouds", - "description": "few clouds", - "icon": "02n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 1.54 + } }, { - "dt": 1741636800, + "dt": 1744326000, "main": { - "temp": -1.91, - "feels_like": -4.1, - "pressure": 1012, - "humidity": 83, - "temp_min": -2.82, - "temp_max": -1.12 + "temp": 2.2, + "feels_like": 1, + "pressure": 1007, + "humidity": 95, + "temp_min": 2.18, + "temp_max": 3.03 }, "wind": { - "speed": 1.6, - "deg": 183, - "gust": 1.7 + "speed": 1.34, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 13 + "all": 100 }, "weather": [ { - "id": 801, - "main": "Clouds", - "description": "few clouds", - "icon": "02n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 1.33 + } }, { - "dt": 1741640400, + "dt": 1744329600, "main": { - "temp": -2.82, - "feels_like": -5.91, - "pressure": 1011, - "humidity": 86, - "temp_min": -2.82, - "temp_max": -1.97 + "temp": 1.38, + "feels_like": 1.38, + "pressure": 1007, + "humidity": 95, + "temp_min": 1.07, + "temp_max": 2.03 }, "wind": { - "speed": 2.13, - "deg": 193, - "gust": 2.29 + "speed": 0.45, + "deg": 23, + "gust": 1.34 }, "clouds": { - "all": 41 + "all": 100 }, "weather": [ { - "id": 802, - "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 1.06 + } }, { - "dt": 1741644000, + "dt": 1744329600, "main": { - "temp": -2.82, - "feels_like": -6.43, - "pressure": 1011, - "humidity": 87, - "temp_min": -2.97, - "temp_max": -2.82 + "temp": 1.38, + "feels_like": 1.38, + "pressure": 1007, + "humidity": 95, + "temp_min": 1.07, + "temp_max": 2.03 }, "wind": { - "speed": 2.56, - "deg": 185, - "gust": 2.64 + "speed": 0.45, + "deg": 23, + "gust": 1.34 }, "clouds": { - "all": 56 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 1.06 + } }, { - "dt": 1741647600, + "dt": 1744333200, "main": { - "temp": -2.82, - "feels_like": -6.39, - "pressure": 1011, - "humidity": 87, - "temp_min": -2.97, - "temp_max": -2.82 + "temp": 0.78, + "feels_like": 0.78, + "pressure": 1007, + "humidity": 95, + "temp_min": 0.55, + "temp_max": 2.03 }, "wind": { - "speed": 2.52, - "deg": 182, - "gust": 2.62 + "speed": 0.48, + "deg": 27, + "gust": 0.35 }, "clouds": { - "all": 62 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.95 + } }, { - "dt": 1741647600, + "dt": 1744336800, "main": { - "temp": -2.82, - "feels_like": -6.39, - "pressure": 1011, - "humidity": 87, - "temp_min": -2.97, - "temp_max": -2.82 + "temp": 0.53, + "feels_like": 0.53, + "pressure": 1008, + "humidity": 95, + "temp_min": 0.51, + "temp_max": 1.03 }, "wind": { - "speed": 2.52, - "deg": 182, - "gust": 2.62 + "speed": 0.46, + "deg": 354, + "gust": 0.44 }, "clouds": { - "all": 62 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.87 + } }, { - "dt": 1741651200, + "dt": 1744340400, "main": { - "temp": -2.51, - "feels_like": -2.51, - "pressure": 1010, - "humidity": 84, - "temp_min": -2.97, - "temp_max": -2.23 + "temp": 0.27, + "feels_like": 0.27, + "pressure": 1008, + "humidity": 95, + "temp_min": -0.05, + "temp_max": 0.55 }, "wind": { - "speed": 0.45, - "deg": 167, - "gust": 1.79 + "speed": 0.98, + "deg": 39, + "gust": 1.03 }, "clouds": { - "all": 72 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13n" } - ] + ], + "snow": { + "1h": 0.21 + } }, { - "dt": 1741654800, + "dt": 1744344000, "main": { - "temp": -2.51, - "feels_like": -2.51, - "pressure": 1009, - "humidity": 84, - "temp_min": -2.97, - "temp_max": -2.23 + "temp": 0.27, + "feels_like": 0.27, + "pressure": 1008, + "humidity": 96, + "temp_min": -0.05, + "temp_max": 0.55 }, "wind": { - "speed": 0.45, - "deg": 144, - "gust": 2.24 + "speed": 1.18, + "deg": 57, + "gust": 1.5 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.22 + } }, { - "dt": 1741658400, + "dt": 1744347600, "main": { - "temp": -2.51, - "feels_like": -2.51, + "temp": 0.53, + "feels_like": 0.53, "pressure": 1008, - "humidity": 81, - "temp_min": -2.97, - "temp_max": -2.23 + "humidity": 96, + "temp_min": 0.51, + "temp_max": 1.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 1.34 + "speed": 1.08, + "deg": 68, + "gust": 1.35 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.51 + } }, { - "dt": 1741662000, + "dt": 1744351200, "main": { - "temp": -2.8, - "feels_like": -2.8, - "pressure": 1007, - "humidity": 78, - "temp_min": -2.97, - "temp_max": -2.78 - }, - "wind": { - "speed": 0.89, - "deg": 184, - "gust": 2.24 + "temp": 0.53, + "feels_like": 0.53, + "pressure": 1008, + "humidity": 96, + "temp_min": 0.51, + "temp_max": 1.03 + }, + "wind": { + "speed": 1.33, + "deg": 83, + "gust": 1.56 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 2.73 + } }, { - "dt": 1741665600, + "dt": 1744354800, "main": { - "temp": -2.8, - "feels_like": -2.8, - "pressure": 1007, - "humidity": 79, - "temp_min": -2.97, - "temp_max": -2.78 + "temp": 0.83, + "feels_like": 0.83, + "pressure": 1008, + "humidity": 96, + "temp_min": 0.51, + "temp_max": 1.11 }, "wind": { - "speed": 0.89, - "deg": 149, - "gust": 2.24 + "speed": 1.05, + "deg": 124, + "gust": 1.14 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.37 + } }, { - "dt": 1741669200, + "dt": 1744358400, "main": { - "temp": -3.36, - "feels_like": -6.12, - "pressure": 1007, - "humidity": 81, - "temp_min": -3.38, - "temp_max": -2.97 + "temp": 1.38, + "feels_like": -0.21, + "pressure": 1008, + "humidity": 96, + "temp_min": 1.03, + "temp_max": 1.66 }, "wind": { - "speed": 1.83, - "deg": 121, - "gust": 2.16 + "speed": 1.52, + "deg": 120, + "gust": 1.79 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.13 + } }, { - "dt": 1741672800, + "dt": 1744362000, "main": { - "temp": -3.62, - "feels_like": -6.8, - "pressure": 1006, - "humidity": 83, - "temp_min": -3.93, - "temp_max": -2.97 + "temp": 1.38, + "feels_like": -0.38, + "pressure": 1008, + "humidity": 96, + "temp_min": 1.07, + "temp_max": 2.03 }, "wind": { - "speed": 2.09, - "deg": 96, - "gust": 2.5 + "speed": 1.64, + "deg": 97, + "gust": 1.89 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 601, + "main": "Snow", + "description": "snow", + "icon": "13d" } - ] + ], + "snow": { + "1h": 0.75 + } }, { - "dt": 1741676400, + "dt": 1744365600, "main": { - "temp": -3.62, - "feels_like": -7.16, - "pressure": 1006, - "humidity": 83, - "temp_min": -3.93, - "temp_max": -2.97 + "temp": 1.66, + "feels_like": -0.28, + "pressure": 1008, + "humidity": 97, + "temp_min": 1.66, + "temp_max": 3.03 }, "wind": { - "speed": 2.37, - "deg": 94, - "gust": 2.83 + "speed": 1.8, + "deg": 87, + "gust": 2.05 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.27 + } }, { - "dt": 1741680000, + "dt": 1744369200, "main": { - "temp": -2.76, - "feels_like": -6.35, - "pressure": 1006, - "humidity": 80, - "temp_min": -3.38, - "temp_max": -1.97 + "temp": 2.2, + "feels_like": 2.2, + "pressure": 1008, + "humidity": 96, + "temp_min": 2.18, + "temp_max": 3.03 }, "wind": { - "speed": 2.55, - "deg": 94, - "gust": 3.02 + "speed": 0.89, + "deg": 270, + "gust": 1.79 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { @@ -7097,289 +7148,316 @@ ] }, { - "dt": 1741683600, + "dt": 1744372800, "main": { - "temp": -1.4, - "feels_like": -4.84, - "pressure": 1005, - "humidity": 74, - "temp_min": -1.71, - "temp_max": -0.97 + "temp": 3, + "feels_like": 1.62, + "pressure": 1007, + "humidity": 96, + "temp_min": 2.77, + "temp_max": 4.03 }, "wind": { - "speed": 2.65, - "deg": 85, - "gust": 3.25 + "speed": 1.53, + "deg": 114, + "gust": 2.29 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.33 + } }, { - "dt": 1741687200, + "dt": 1744376400, "main": { - "temp": -0.03, - "feels_like": -0.03, - "pressure": 1005, - "humidity": 62, - "temp_min": -0.05, - "temp_max": 0.03 + "temp": 3.56, + "feels_like": 2.38, + "pressure": 1006, + "humidity": 96, + "temp_min": 3.33, + "temp_max": 4.03 }, "wind": { - "speed": 0.45, - "deg": 192, - "gust": 1.79 + "speed": 1.45, + "deg": 103, + "gust": 1.97 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.92 + } }, { - "dt": 1741690800, + "dt": 1744380000, "main": { - "temp": 0.83, - "feels_like": 0.83, - "pressure": 1005, - "humidity": 56, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 3.86, + "feels_like": 2.88, + "pressure": 1006, + "humidity": 96, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 0.89, - "deg": 90, - "gust": 1.79 + "speed": 1.34, + "deg": 133, + "gust": 2.14 }, "clouds": { - "all": 97 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 2.19 + } }, { - "dt": 1741694400, + "dt": 1744383600, "main": { - "temp": 1.94, - "feels_like": 1.94, - "pressure": 1004, - "humidity": 56, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 4.44, + "feels_like": 4.44, + "pressure": 1005, + "humidity": 97, + "temp_min": 4.44, + "temp_max": 5.03 }, "wind": { - "speed": 0.45, - "deg": 113, - "gust": 1.79 + "speed": 1.27, + "deg": 163, + "gust": 1.81 }, "clouds": { - "all": 83 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.17 + } }, { - "dt": 1741698000, + "dt": 1744387200, "main": { - "temp": 1.94, - "feels_like": 0.71, + "temp": 4.44, + "feels_like": 2.57, "pressure": 1004, - "humidity": 57, - "temp_min": 1.62, - "temp_max": 3.03 + "humidity": 97, + "temp_min": 4.44, + "temp_max": 6.03 }, "wind": { - "speed": 1.34, - "deg": 135, - "gust": 4.02 + "speed": 2.14, + "deg": 203, + "gust": 2.6 }, "clouds": { - "all": 59 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.68 + } }, { - "dt": 1741701600, + "dt": 1744390800, "main": { - "temp": 2.49, - "feels_like": 2.49, + "temp": 6.66, + "feels_like": 6.66, "pressure": 1003, - "humidity": 56, - "temp_min": 2.18, - "temp_max": 4.03 + "humidity": 98, + "temp_min": 5.03, + "temp_max": 6.66 }, "wind": { - "speed": 0.89, - "deg": 135, - "gust": 3.58 + "speed": 0.45, + "deg": 105, + "gust": 1.79 }, "clouds": { - "all": 66 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.71 + } }, { - "dt": 1741705200, + "dt": 1744394400, "main": { - "temp": 2.75, - "feels_like": 1.62, + "temp": 6.64, + "feels_like": 6.64, "pressure": 1003, - "humidity": 58, - "temp_min": 2.73, - "temp_max": 3.03 + "humidity": 97, + "temp_min": 5.03, + "temp_max": 6.66 }, "wind": { - "speed": 1.34, - "deg": 135, - "gust": 3.58 + "speed": 0.45, + "deg": 139, + "gust": 1.34 }, "clouds": { - "all": 68 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.17 + } }, { - "dt": 1741708800, + "dt": 1744398000, "main": { - "temp": 2.2, - "feels_like": 2.2, + "temp": 7.2, + "feels_like": 7.2, "pressure": 1003, - "humidity": 60, - "temp_min": 2.18, - "temp_max": 3.03 + "humidity": 97, + "temp_min": 6.03, + "temp_max": 7.22 }, "wind": { - "speed": 0.45, - "deg": 207, - "gust": 0.89 + "speed": 0.89, + "deg": 203, + "gust": 2.68 }, "clouds": { - "all": 64 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.11 + } }, { - "dt": 1741712400, + "dt": 1744401600, "main": { - "temp": 1.11, - "feels_like": -2.68, + "temp": 7.2, + "feels_like": 6.14, "pressure": 1003, - "humidity": 63, - "temp_min": 1.11, - "temp_max": 2.03 + "humidity": 97, + "temp_min": 7.03, + "temp_max": 7.22 }, "wind": { - "speed": 3.65, - "deg": 86, - "gust": 4.77 + "speed": 1.79, + "deg": 203, + "gust": 6.26 }, "clouds": { - "all": 61 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.41 + } }, { - "dt": 1741716000, + "dt": 1744405200, "main": { - "temp": 1.03, - "feels_like": -2.72, + "temp": 6.09, + "feels_like": 4.41, "pressure": 1004, - "humidity": 72, - "temp_min": 1.03, - "temp_max": 1.03 + "humidity": 91, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 3.57, - "deg": 93, - "gust": 4.55 + "speed": 2.24, + "deg": 248, + "gust": 6.71 }, "clouds": { - "all": 80 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1741719600, + "dt": 1744408800, "main": { - "temp": 1.03, - "feels_like": -2.14, - "pressure": 1004, - "humidity": 76, - "temp_min": 1.03, - "temp_max": 1.03 + "temp": 5.78, + "feels_like": 4.5, + "pressure": 1005, + "humidity": 88, + "temp_min": 5.55, + "temp_max": 7.03 }, "wind": { - "speed": 2.86, - "deg": 98, - "gust": 3.88 + "speed": 1.79, + "deg": 270, + "gust": 6.26 }, "clouds": { "all": 100 @@ -7394,19 +7472,19 @@ ] }, { - "dt": 1741723200, + "dt": 1744412400, "main": { - "temp": 1.03, - "feels_like": -1.73, - "pressure": 1004, - "humidity": 78, - "temp_min": 1.03, - "temp_max": 1.03 + "temp": 5.53, + "feels_like": 3.05, + "pressure": 1006, + "humidity": 84, + "temp_min": 5.51, + "temp_max": 7.03 }, "wind": { - "speed": 2.43, - "deg": 117, - "gust": 3.43 + "speed": 3.13, + "deg": 225, + "gust": 9.83 }, "clouds": { "all": 100 @@ -7421,22 +7499,22 @@ ] }, { - "dt": 1741726800, + "dt": 1744416000, "main": { - "temp": 1.03, - "feels_like": -1.12, - "pressure": 1004, - "humidity": 79, - "temp_min": 1.03, - "temp_max": 1.03 + "temp": 4.67, + "feels_like": 2.36, + "pressure": 1006, + "humidity": 82, + "temp_min": 4.44, + "temp_max": 6.03 }, "wind": { - "speed": 1.89, - "deg": 129, - "gust": 2.55 + "speed": 2.68, + "deg": 225, + "gust": 6.71 }, "clouds": { - "all": 94 + "all": 100 }, "weather": [ { @@ -7448,22 +7526,22 @@ ] }, { - "dt": 1741730400, + "dt": 1744419600, "main": { - "temp": 0.03, - "feels_like": -1.83, - "pressure": 1005, - "humidity": 79, - "temp_min": 0.03, - "temp_max": 0.03 + "temp": 4.16, + "feels_like": 4.16, + "pressure": 1007, + "humidity": 85, + "temp_min": 3.84, + "temp_max": 6.03 }, "wind": { - "speed": 1.57, - "deg": 123, - "gust": 2.07 + "speed": 0.89, + "deg": 95, + "gust": 3.58 }, "clouds": { - "all": 87 + "all": 100 }, "weather": [ { @@ -7475,859 +7553,874 @@ ] }, { - "dt": 1741734000, + "dt": 1744423200, "main": { - "temp": -1.97, - "feels_like": -3.84, - "pressure": 1005, - "humidity": 80, - "temp_min": -1.97, - "temp_max": -1.97 + "temp": 3.91, + "feels_like": 3.91, + "pressure": 1007, + "humidity": 86, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 1.41, - "deg": 123, - "gust": 1.81 + "speed": 0.45, + "deg": 150, + "gust": 3.58 }, "clouds": { - "all": 77 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1741737600, + "dt": 1744426800, "main": { - "temp": -2.97, - "feels_like": -4.96, - "pressure": 1005, - "humidity": 81, - "temp_min": -2.97, - "temp_max": -2.97 + "temp": 4.16, + "feels_like": 4.16, + "pressure": 1006, + "humidity": 84, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 1.4, - "deg": 141, - "gust": 1.62 + "speed": 0.45, + "deg": 180, + "gust": 2.24 }, "clouds": { - "all": 82 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1741741200, + "dt": 1744430400, "main": { - "temp": -1.97, - "feels_like": -4.21, - "pressure": 1005, - "humidity": 81, - "temp_min": -1.97, - "temp_max": -1.97 + "temp": 3.6, + "feels_like": 3.6, + "pressure": 1006, + "humidity": 85, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 1.63, - "deg": 152, - "gust": 1.63 + "speed": 0.89, + "deg": 109, + "gust": 5.81 }, "clouds": { - "all": 94 + "all": 100 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1741744800, + "dt": 1744434000, "main": { - "temp": -2.97, - "feels_like": -5.09, - "pressure": 1005, - "humidity": 81, - "temp_min": -2.97, - "temp_max": -2.97 + "temp": 3.91, + "feels_like": 3.91, + "pressure": 1007, + "humidity": 85, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 1.47, - "deg": 165, - "gust": 1.38 + "speed": 0.89, + "deg": 180, + "gust": 2.24 }, "clouds": { - "all": 77 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741748400, + "dt": 1744437600, "main": { - "temp": -3.97, - "feels_like": -6.42, - "pressure": 1005, - "humidity": 81, - "temp_min": -3.97, - "temp_max": -3.97 + "temp": 5.02, + "feels_like": 4.19, + "pressure": 1007, + "humidity": 80, + "temp_min": 4.4, + "temp_max": 5.55 }, "wind": { - "speed": 1.58, - "deg": 170, - "gust": 1.48 + "speed": 1.34, + "deg": 75, + "gust": 4.02 }, "clouds": { - "all": 64 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741752000, + "dt": 1744441200, "main": { - "temp": -3.97, - "feels_like": -6.61, - "pressure": 1005, - "humidity": 81, - "temp_min": -3.97, - "temp_max": -3.97 + "temp": 6.09, + "feels_like": 5.4, + "pressure": 1007, + "humidity": 76, + "temp_min": 5.03, + "temp_max": 6.11 }, "wind": { - "speed": 1.69, - "deg": 168, - "gust": 1.62 + "speed": 1.34, + "deg": 180, + "gust": 3.58 }, "clouds": { - "all": 59 + "all": 95 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } - ] + ], + "rain": { + "1h": 0.1 + } }, { - "dt": 1741755600, + "dt": 1744444800, "main": { - "temp": -4.97, - "feels_like": -7.35, - "pressure": 1005, - "humidity": 80, - "temp_min": -4.97, - "temp_max": -4.97 + "temp": 5.53, + "feels_like": 4.21, + "pressure": 1007, + "humidity": 81, + "temp_min": 5.03, + "temp_max": 5.55 }, "wind": { - "speed": 1.46, - "deg": 165, - "gust": 1.35 + "speed": 1.79, + "deg": 225, + "gust": 4.92 }, "clouds": { - "all": 56 + "all": 67 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.07 + } }, { - "dt": 1741759200, + "dt": 1744448400, "main": { - "temp": -5.05, - "feels_like": -7.48, - "pressure": 1005, - "humidity": 83, - "temp_min": -5.05, - "temp_max": -4.97 + "temp": 7.15, + "feels_like": 5.31, + "pressure": 1007, + "humidity": 69, + "temp_min": 6.03, + "temp_max": 7.73 }, "wind": { - "speed": 1.48, - "deg": 173, - "gust": 1.32 + "speed": 2.68, + "deg": 270, + "gust": 7.15 }, "clouds": { - "all": 39 + "all": 64 }, "weather": [ { - "id": 802, + "id": 803, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1741762800, + "dt": 1744452000, "main": { - "temp": -4.49, - "feels_like": -4.49, - "pressure": 1005, - "humidity": 82, - "temp_min": -4.97, - "temp_max": -4.49 + "temp": 7.75, + "feels_like": 6.36, + "pressure": 1008, + "humidity": 65, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 225, - "gust": 1.79 + "speed": 2.24, + "deg": 270, + "gust": 6.26 }, "clouds": { - "all": 21 + "all": 68 }, "weather": [ { - "id": 801, + "id": 803, "main": "Clouds", - "description": "few clouds", - "icon": "02d" + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1741766400, + "dt": 1744455600, "main": { - "temp": -2.76, - "feels_like": -4.61, - "pressure": 1005, - "humidity": 72, - "temp_min": -3.38, - "temp_max": -2.23 + "temp": 7.8, + "feels_like": 6.09, + "pressure": 1008, + "humidity": 68, + "temp_min": 7.18, + "temp_max": 8.33 }, "wind": { - "speed": 1.34, + "speed": 2.68, "deg": 203, - "gust": 2.24 + "gust": 7.6 }, "clouds": { - "all": 28 + "all": 71 }, "weather": [ { - "id": 802, + "id": 803, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1741770000, + "dt": 1744459200, "main": { - "temp": -1.95, - "feels_like": -1.95, - "pressure": 1005, - "humidity": 71, - "temp_min": -2.27, - "temp_max": -1.67 + "temp": 7.45, + "feels_like": 6.42, + "pressure": 1008, + "humidity": 73, + "temp_min": 7.22, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 167, - "gust": 3.13 + "speed": 1.79, + "deg": 225, + "gust": 5.81 }, "clouds": { - "all": 43 + "all": 69 }, "weather": [ { - "id": 802, - "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.26 + } }, { - "dt": 1741773600, + "dt": 1744462800, "main": { - "temp": -1.4, - "feels_like": -1.4, - "pressure": 1005, - "humidity": 67, - "temp_min": -1.71, - "temp_max": 0.03 + "temp": 5.53, + "feels_like": 5.53, + "pressure": 1008, + "humidity": 87, + "temp_min": 5.51, + "temp_max": 6.03 }, "wind": { - "speed": 0.45, - "deg": 0, - "gust": 1.79 + "speed": 0.89, + "deg": 203, + "gust": 3.13 }, "clouds": { - "all": 52 + "all": 69 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.93 + } }, { - "dt": 1741777200, + "dt": 1744466400, "main": { - "temp": 0.51, - "feels_like": 0.51, - "pressure": 1005, - "humidity": 63, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 6.09, + "feels_like": 6.09, + "pressure": 1008, + "humidity": 88, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 0.94, - "deg": 72, - "gust": 1.55 + "speed": 0.45, + "deg": 225, + "gust": 1.34 }, "clouds": { - "all": 57 + "all": 84 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.16 + } }, { - "dt": 1741780800, + "dt": 1744470000, "main": { - "temp": 0.55, - "feels_like": 0.55, - "pressure": 1004, - "humidity": 68, - "temp_min": 0.55, - "temp_max": 2.03 + "temp": 6.09, + "feels_like": 5.4, + "pressure": 1008, + "humidity": 86, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 0.81, - "deg": 46, - "gust": 1.19 + "speed": 1.34, + "deg": 225, + "gust": 4.02 }, "clouds": { - "all": 66 + "all": 90 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1741784400, + "dt": 1744473600, "main": { - "temp": 1.11, - "feels_like": 1.11, - "pressure": 1004, - "humidity": 70, - "temp_min": 1.11, - "temp_max": 3.03 + "temp": 5.83, + "feels_like": 5.11, + "pressure": 1008, + "humidity": 86, + "temp_min": 5.51, + "temp_max": 6.11 }, "wind": { - "speed": 0.79, - "deg": 20, - "gust": 1.12 + "speed": 1.34, + "deg": 225, + "gust": 3.58 }, "clouds": { - "all": 10 + "all": 92 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741788000, + "dt": 1744477200, "main": { - "temp": 0.55, - "feels_like": 0.55, - "pressure": 1004, - "humidity": 72, - "temp_min": 0.55, - "temp_max": 2.03 + "temp": 5.78, + "feels_like": 5.05, + "pressure": 1008, + "humidity": 85, + "temp_min": 5.55, + "temp_max": 7.03 }, "wind": { - "speed": 0.73, - "deg": 15, - "gust": 1.16 + "speed": 1.34, + "deg": 225, + "gust": 3.13 }, "clouds": { - "all": 22 + "all": 92 }, "weather": [ { - "id": 801, + "id": 804, "main": "Clouds", - "description": "few clouds", - "icon": "02d" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741791600, + "dt": 1744480800, "main": { - "temp": -0.56, - "feels_like": -0.56, - "pressure": 1004, - "humidity": 76, - "temp_min": -0.56, - "temp_max": 2.03 + "temp": 5.78, + "feels_like": 5.78, + "pressure": 1007, + "humidity": 85, + "temp_min": 5.55, + "temp_max": 7.03 }, "wind": { - "speed": 0.8, - "deg": 20, - "gust": 1.37 + "speed": 0.89, + "deg": 180, + "gust": 2.68 }, "clouds": { - "all": 31 + "all": 92 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741795200, + "dt": 1744484400, "main": { - "temp": -0.56, - "feels_like": -0.56, - "pressure": 1004, - "humidity": 74, - "temp_min": -0.56, - "temp_max": 3.03 + "temp": 5.55, + "feels_like": 4.41, + "pressure": 1007, + "humidity": 88, + "temp_min": 5.55, + "temp_max": 7.03 }, "wind": { - "speed": 1.04, - "deg": 36, - "gust": 1.59 + "speed": 1.63, + "deg": 237, + "gust": 2.42 }, "clouds": { - "all": 32 + "all": 99 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1741798800, + "dt": 1744488000, "main": { - "temp": -1.12, - "feels_like": -2.9, - "pressure": 1004, - "humidity": 78, - "temp_min": -1.12, - "temp_max": 0.03 + "temp": 4.99, + "feels_like": 4.99, + "pressure": 1007, + "humidity": 89, + "temp_min": 4.99, + "temp_max": 7.03 }, "wind": { - "speed": 1.42, - "deg": 52, - "gust": 1.99 + "speed": 0.22, + "deg": 198, + "gust": 0.45 }, "clouds": { - "all": 29 + "all": 94 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1741802400, + "dt": 1744491600, "main": { - "temp": -1.4, - "feels_like": -3.16, - "pressure": 1004, - "humidity": 72, - "temp_min": -1.71, - "temp_max": 0.03 + "temp": 4.99, + "feels_like": 4, + "pressure": 1007, + "humidity": 90, + "temp_min": 4.99, + "temp_max": 6.03 }, "wind": { - "speed": 1.39, - "deg": 90, - "gust": 1.86 + "speed": 1.45, + "deg": 117, + "gust": 0.58 }, "clouds": { - "all": 25 + "all": 94 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1741806000, + "dt": 1744495200, "main": { - "temp": -1.65, - "feels_like": -3.78, - "pressure": 1004, - "humidity": 73, - "temp_min": -2.27, - "temp_max": -1.12 + "temp": 4.44, + "feels_like": 2.47, + "pressure": 1006, + "humidity": 92, + "temp_min": 4.44, + "temp_max": 5.03 }, "wind": { - "speed": 1.59, - "deg": 98, - "gust": 1.99 + "speed": 2.24, + "deg": 123, + "gust": 1.87 }, "clouds": { - "all": 52 + "all": 95 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1741809600, + "dt": 1744498800, "main": { - "temp": -2.27, - "feels_like": -4.71, - "pressure": 1004, - "humidity": 78, - "temp_min": -2.27, - "temp_max": -1.97 + "temp": 4.44, + "feels_like": 2.38, + "pressure": 1006, + "humidity": 89, + "temp_min": 4.03, + "temp_max": 4.44 }, "wind": { - "speed": 1.73, - "deg": 117, - "gust": 2.01 + "speed": 2.34, + "deg": 118, + "gust": 2.29 }, "clouds": { - "all": 34 + "all": 96 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1741813200, + "dt": 1744502400, "main": { - "temp": -0.97, - "feels_like": -3.29, - "pressure": 1004, - "humidity": 80, - "temp_min": -0.97, - "temp_max": -0.97 + "temp": 3.88, + "feels_like": 1.81, + "pressure": 1005, + "humidity": 89, + "temp_min": 3.03, + "temp_max": 3.88 }, "wind": { - "speed": 1.78, - "deg": 143, - "gust": 2.04 + "speed": 2.25, + "deg": 111, + "gust": 2.36 }, "clouds": { - "all": 34 + "all": 97 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1741816800, + "dt": 1744506000, "main": { - "temp": -0.97, - "feels_like": -3.56, - "pressure": 1004, - "humidity": 80, - "temp_min": -0.97, - "temp_max": -0.97 + "temp": 3.88, + "feels_like": 1.7, + "pressure": 1005, + "humidity": 89, + "temp_min": 3.03, + "temp_max": 3.88 }, "wind": { - "speed": 1.98, - "deg": 160, - "gust": 1.97 + "speed": 2.36, + "deg": 100, + "gust": 2.63 }, "clouds": { - "all": 47 + "all": 100 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1741820400, + "dt": 1744509600, "main": { - "temp": -0.97, - "feels_like": -3.23, + "temp": 3.33, + "feels_like": 0.98, "pressure": 1004, - "humidity": 79, - "temp_min": -0.97, - "temp_max": -0.97 + "humidity": 91, + "temp_min": 3.03, + "temp_max": 3.33 }, "wind": { - "speed": 1.74, - "deg": 162, - "gust": 1.72 + "speed": 2.44, + "deg": 89, + "gust": 2.88 }, "clouds": { - "all": 57 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1741824000, + "dt": 1744513200, "main": { - "temp": -1.97, - "feels_like": -4.53, - "pressure": 1004, - "humidity": 78, - "temp_min": -1.97, - "temp_max": -1.97 + "temp": 3.33, + "feels_like": 0.85, + "pressure": 1003, + "humidity": 90, + "temp_min": 3.03, + "temp_max": 3.33 }, "wind": { - "speed": 1.84, - "deg": 159, - "gust": 1.75 + "speed": 2.58, + "deg": 82, + "gust": 3.08 }, "clouds": { - "all": 64 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1741827600, + "dt": 1744516800, "main": { - "temp": -1.97, - "feels_like": -4.1, - "pressure": 1003, - "humidity": 78, - "temp_min": -1.97, - "temp_max": -1.97 - }, - "wind": { - "speed": 1.56, - "deg": 166, - "gust": 1.38 + "temp": 3.33, + "feels_like": 0.6, + "pressure": 1002, + "humidity": 91, + "temp_min": 3.03, + "temp_max": 3.33 + }, + "wind": { + "speed": 2.87, + "deg": 82, + "gust": 3.4 }, "clouds": { - "all": 74 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741831200, + "dt": 1744520400, "main": { - "temp": -1.97, - "feels_like": -4.09, - "pressure": 1003, - "humidity": 77, - "temp_min": -1.97, - "temp_max": -1.97 + "temp": 2.77, + "feels_like": -0.2, + "pressure": 1002, + "humidity": 91, + "temp_min": 2.77, + "temp_max": 4.03 }, "wind": { - "speed": 1.55, - "deg": 160, - "gust": 1.4 + "speed": 3.04, + "deg": 82, + "gust": 3.66 }, "clouds": { - "all": 75 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741834800, + "dt": 1744524000, "main": { - "temp": -1.97, - "feels_like": -4.13, - "pressure": 1003, - "humidity": 76, - "temp_min": -1.97, - "temp_max": -1.97 + "temp": 3.33, + "feels_like": 0.36, + "pressure": 1001, + "humidity": 90, + "temp_min": 3.33, + "temp_max": 4.03 }, "wind": { - "speed": 1.58, - "deg": 156, - "gust": 1.57 + "speed": 3.18, + "deg": 82, + "gust": 4.07 }, "clouds": { - "all": 76 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741838400, + "dt": 1744527600, "main": { - "temp": -3.93, - "feels_like": -6.11, - "pressure": 1003, - "humidity": 77, - "temp_min": -3.93, - "temp_max": -2.97 + "temp": 4.99, + "feels_like": 2.57, + "pressure": 1001, + "humidity": 86, + "temp_min": 4.99, + "temp_max": 5.03 }, "wind": { - "speed": 1.43, - "deg": 158, - "gust": 1.41 + "speed": 2.9, + "deg": 90, + "gust": 3.57 }, "clouds": { - "all": 73 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741842000, + "dt": 1744531200, "main": { - "temp": -4.17, - "feels_like": -6.44, - "pressure": 1003, - "humidity": 78, - "temp_min": -4.49, - "temp_max": -3.89 + "temp": 6.66, + "feels_like": 4.49, + "pressure": 1000, + "humidity": 76, + "temp_min": 6.66, + "temp_max": 8.03 }, "wind": { - "speed": 1.46, - "deg": 159, - "gust": 1.38 + "speed": 3.01, + "deg": 90, + "gust": 3.79 }, "clouds": { - "all": 67 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741845600, + "dt": 1744534800, "main": { - "temp": -4.43, - "feels_like": -4.43, - "pressure": 1003, - "humidity": 79, - "temp_min": -5.05, - "temp_max": -3.89 + "temp": 7.77, + "feels_like": 5.69, + "pressure": 999, + "humidity": 74, + "temp_min": 7.77, + "temp_max": 11.03 }, "wind": { - "speed": 0.45, - "deg": 233, - "gust": 0.89 + "speed": 3.23, + "deg": 86, + "gust": 4 }, "clouds": { - "all": 92 + "all": 100 }, "weather": [ { @@ -8339,22 +8432,22 @@ ] }, { - "dt": 1741849200, + "dt": 1744538400, "main": { - "temp": -3.27, - "feels_like": -3.27, - "pressure": 1003, - "humidity": 79, - "temp_min": -4.49, - "temp_max": -2.23 + "temp": 9.44, + "feels_like": 7.75, + "pressure": 998, + "humidity": 74, + "temp_min": 9.44, + "temp_max": 15.03 }, "wind": { - "speed": 0.45, - "deg": 180, - "gust": 1.79 + "speed": 3.15, + "deg": 87, + "gust": 4.03 }, "clouds": { - "all": 88 + "all": 100 }, "weather": [ { @@ -8366,22 +8459,22 @@ ] }, { - "dt": 1741852800, + "dt": 1744542000, "main": { - "temp": -2.82, - "feels_like": -2.82, - "pressure": 1003, - "humidity": 76, - "temp_min": -2.97, - "temp_max": -2.82 + "temp": 10.55, + "feels_like": 9.41, + "pressure": 998, + "humidity": 67, + "temp_min": 10.55, + "temp_max": 15.03 }, "wind": { - "speed": 0.45, - "deg": 225, - "gust": 1.34 + "speed": 3.54, + "deg": 105, + "gust": 4.78 }, "clouds": { - "all": 88 + "all": 100 }, "weather": [ { @@ -8393,19 +8486,19 @@ ] }, { - "dt": 1741856400, + "dt": 1744545600, "main": { - "temp": -1.16, - "feels_like": -1.16, - "pressure": 1003, - "humidity": 69, - "temp_min": -1.97, - "temp_max": -1.16 + "temp": 12.22, + "feels_like": 11.19, + "pressure": 997, + "humidity": 65, + "temp_min": 12.22, + "temp_max": 17.03 }, "wind": { - "speed": 0.45, - "deg": 203, - "gust": 1.34 + "speed": 3.72, + "deg": 111, + "gust": 5.47 }, "clouds": { "all": 87 @@ -8420,234 +8513,243 @@ ] }, { - "dt": 1741860000, + "dt": 1744549200, "main": { - "temp": 1.11, - "feels_like": 1.11, - "pressure": 1003, - "humidity": 70, - "temp_min": 1.03, - "temp_max": 1.11 + "temp": 11.66, + "feels_like": 10.66, + "pressure": 996, + "humidity": 68, + "temp_min": 11.66, + "temp_max": 17.03 }, "wind": { - "speed": 0.45, - "deg": 52, - "gust": 2.24 + "speed": 4.34, + "deg": 113, + "gust": 6.5 }, "clouds": { - "all": 81 + "all": 86 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1741863600, + "dt": 1744552800, "main": { - "temp": 1.11, - "feels_like": 1.11, - "pressure": 1002, - "humidity": 71, - "temp_min": 1.11, - "temp_max": 3.03 + "temp": 16.03, + "feels_like": 15.57, + "pressure": 995, + "humidity": 72, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 0.45, - "deg": 64, - "gust": 1.34 + "speed": 4.58, + "deg": 116, + "gust": 6.9 }, "clouds": { - "all": 74 + "all": 92 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1741867200, + "dt": 1744556400, "main": { - "temp": 1.89, - "feels_like": 0.65, - "pressure": 1002, - "humidity": 69, - "temp_min": 1.66, - "temp_max": 2.18 + "temp": 16.03, + "feels_like": 15.59, + "pressure": 994, + "humidity": 73, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 1.34, - "deg": 23, - "gust": 2.68 + "speed": 4.13, + "deg": 111, + "gust": 7.14 }, "clouds": { - "all": 84 + "all": 95 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1741870800, + "dt": 1744560000, "main": { - "temp": 2.45, - "feels_like": 2.45, - "pressure": 1002, - "humidity": 66, - "temp_min": 2.03, - "temp_max": 2.73 + "temp": 16.03, + "feels_like": 15.59, + "pressure": 993, + "humidity": 73, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 0.89, - "deg": 248, - "gust": 1.79 + "speed": 3.84, + "deg": 96, + "gust": 6.74 }, "clouds": { - "all": 33 + "all": 95 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741874400, + "dt": 1744563600, "main": { - "temp": 0.55, - "feels_like": 0.55, - "pressure": 1001, - "humidity": 77, - "temp_min": 0.55, - "temp_max": 5.03 + "temp": 16.03, + "feels_like": 15.65, + "pressure": 992, + "humidity": 75, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 0.45, - "deg": 332, - "gust": 1.79 + "speed": 3.96, + "deg": 90, + "gust": 6.49 }, "clouds": { - "all": 36 + "all": 96 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1741878000, + "dt": 1744567200, "main": { - "temp": 3.31, - "feels_like": 2.26, - "pressure": 1001, - "humidity": 62, - "temp_min": 3.03, - "temp_max": 3.33 + "temp": 16.03, + "feels_like": 15.62, + "pressure": 991, + "humidity": 74, + "temp_min": 16.03, + "temp_max": 16.03 }, "wind": { - "speed": 1.34, - "deg": 225, - "gust": 2.24 + "speed": 4.04, + "deg": 95, + "gust": 6.8 }, "clouds": { - "all": 41 + "all": 97 }, "weather": [ { - "id": 802, - "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.27 + } }, { - "dt": 1741881600, + "dt": 1744570800, "main": { - "temp": 2.75, - "feels_like": 2.75, - "pressure": 1001, - "humidity": 64, - "temp_min": 2.73, - "temp_max": 3.03 + "temp": 15.03, + "feels_like": 14.49, + "pressure": 991, + "humidity": 73, + "temp_min": 15.03, + "temp_max": 15.03 }, "wind": { - "speed": 0.89, - "deg": 225, - "gust": 3.58 + "speed": 3.11, + "deg": 108, + "gust": 6.3 }, "clouds": { - "all": 49 + "all": 100 }, "weather": [ { - "id": 802, - "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.67 + } }, { - "dt": 1741885200, + "dt": 1744574400, "main": { - "temp": 0.55, - "feels_like": 0.55, - "pressure": 998, - "humidity": 87, - "temp_min": 0.55, - "temp_max": 0.55 + "temp": 11.62, + "feels_like": 10.25, + "pressure": 991, + "humidity": 54, + "temp_min": 11.62, + "temp_max": 13.03 }, "wind": { - "speed": 0.45, - "deg": 155, - "gust": 1.34 + "speed": 1.34, + "deg": 203, + "gust": 3.58 }, "clouds": { - "all": 77 + "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 1.19 + } }, { - "dt": 1741888800, + "dt": 1744578000, "main": { - "temp": 0.55, - "feels_like": 0.55, - "pressure": 998, - "humidity": 92, - "temp_min": 0.55, - "temp_max": 0.55 + "temp": 9.99, + "feels_like": 9.99, + "pressure": 991, + "humidity": 72, + "temp_min": 9.95, + "temp_max": 9.99 }, "wind": { "speed": 0.45, - "deg": 137, + "deg": 158, "gust": 1.34 }, "clouds": { @@ -8655,22 +8757,25 @@ }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 2.11 + } }, { - "dt": 1741892400, + "dt": 1744581600, "main": { - "temp": -0.01, - "feels_like": -0.01, - "pressure": 999, - "humidity": 91, - "temp_min": -0.01, - "temp_max": -0.01 + "temp": 9.44, + "feels_like": 9.44, + "pressure": 990, + "humidity": 77, + "temp_min": 9.4, + "temp_max": 9.44 }, "wind": { "speed": 0.45, @@ -8682,54 +8787,60 @@ }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.21 + } }, { - "dt": 1741896000, + "dt": 1744585200, "main": { - "temp": 0.55, - "feels_like": -3.17, - "pressure": 999, - "humidity": 92, - "temp_min": 0.55, - "temp_max": 0.55 + "temp": 9.97, + "feels_like": 9.79, + "pressure": 991, + "humidity": 73, + "temp_min": 9.95, + "temp_max": 12.03 }, "wind": { - "speed": 3.4, - "deg": 248, - "gust": 5.7 + "speed": 1.34, + "deg": 176, + "gust": 6.26 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 2.24 + } }, { - "dt": 1741899600, + "dt": 1744588800, "main": { - "temp": -0.01, - "feels_like": -4.14, - "pressure": 999, - "humidity": 92, - "temp_min": -0.01, - "temp_max": -0.01 + "temp": 9.42, + "feels_like": 8.41, + "pressure": 992, + "humidity": 75, + "temp_min": 9.4, + "temp_max": 11.03 }, "wind": { - "speed": 3.78, - "deg": 245, - "gust": 5.04 + "speed": 2.13, + "deg": 269, + "gust": 3.16 }, "clouds": { "all": 100 @@ -8744,73 +8855,46 @@ ] }, { - "dt": 1741903200, - "main": { - "temp": -0.56, - "feels_like": -4.63, - "pressure": 999, - "humidity": 93, - "temp_min": -0.56, - "temp_max": -0.56 - }, - "wind": { - "speed": 3.54, - "deg": 264, - "gust": 5.49 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" - } - ] - }, - { - "dt": 1741906800, + "dt": 1744592400, "main": { - "temp": -0.01, - "feels_like": -2.83, - "pressure": 1000, - "humidity": 94, - "temp_min": -0.01, - "temp_max": -0.01 + "temp": 8.56, + "feels_like": 8.56, + "pressure": 993, + "humidity": 81, + "temp_min": 8.33, + "temp_max": 10.03 }, "wind": { - "speed": 2.31, - "deg": 299, - "gust": 4.8 + "speed": 0.45, + "deg": 0, + "gust": 4.47 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1741910400, + "dt": 1744596000, "main": { - "temp": -0.56, - "feels_like": -3.34, - "pressure": 1001, - "humidity": 94, - "temp_min": -0.56, - "temp_max": -0.56 + "temp": 7.75, + "feels_like": 7.75, + "pressure": 993, + "humidity": 85, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 2.19, - "deg": 316, - "gust": 4.54 + "speed": 0.45, + "deg": 270, + "gust": 1.34 }, "clouds": { "all": 100 @@ -8825,19 +8909,19 @@ ] }, { - "dt": 1741914000, + "dt": 1744599600, "main": { - "temp": -1.12, - "feels_like": -4.5, - "pressure": 1001, - "humidity": 92, - "temp_min": -1.12, - "temp_max": -1.12 + "temp": 7.75, + "feels_like": 7.75, + "pressure": 995, + "humidity": 88, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 2.64, - "deg": 328, - "gust": 5.88 + "speed": 0.45, + "deg": 248, + "gust": 1.79 }, "clouds": { "all": 100 @@ -8852,46 +8936,49 @@ ] }, { - "dt": 1741917600, + "dt": 1744603200, "main": { - "temp": -1.12, - "feels_like": -4.44, - "pressure": 1001, - "humidity": 92, - "temp_min": -1.12, - "temp_max": -1.12 + "temp": 7.22, + "feels_like": 7.22, + "pressure": 996, + "humidity": 91, + "temp_min": 7.22, + "temp_max": 7.73 }, "wind": { - "speed": 2.59, - "deg": 329, - "gust": 5.71 + "speed": 0.89, + "deg": 248, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.44 + } }, { - "dt": 1741921200, + "dt": 1744606800, "main": { - "temp": -1.12, - "feels_like": -4.47, - "pressure": 1002, - "humidity": 92, - "temp_min": -1.12, - "temp_max": -1.12 + "temp": 6.64, + "feels_like": 5.06, + "pressure": 997, + "humidity": 86, + "temp_min": 6.62, + "temp_max": 7.03 }, "wind": { - "speed": 2.61, - "deg": 335, - "gust": 5.68 + "speed": 2.24, + "deg": 248, + "gust": 6.26 }, "clouds": { "all": 100 @@ -8901,81 +8988,87 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1741924800, + "dt": 1744610400, "main": { - "temp": -1.12, - "feels_like": -4.17, - "pressure": 1003, - "humidity": 90, - "temp_min": -1.12, - "temp_max": -1.12 + "temp": 6.09, + "feels_like": 5.4, + "pressure": 998, + "humidity": 86, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 2.34, - "deg": 332, - "gust": 5.25 + "speed": 1.34, + "deg": 203, + "gust": 3.58 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.03 + } }, { - "dt": 1741928400, + "dt": 1744614000, "main": { - "temp": -1.67, - "feels_like": -5.35, - "pressure": 1003, - "humidity": 91, - "temp_min": -1.67, - "temp_max": -1.67 + "temp": 6.09, + "feels_like": 5.4, + "pressure": 999, + "humidity": 84, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 2.84, - "deg": 333, - "gust": 6.32 + "speed": 1.34, + "deg": 203, + "gust": 2.68 }, "clouds": { - "all": 97 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.33 + } }, { - "dt": 1741932000, + "dt": 1744617600, "main": { - "temp": -1.67, - "feels_like": -5.79, - "pressure": 1004, - "humidity": 91, - "temp_min": -1.67, - "temp_max": -1.67 + "temp": 6.64, + "feels_like": 5.49, + "pressure": 1000, + "humidity": 80, + "temp_min": 6.62, + "temp_max": 7.03 }, "wind": { - "speed": 3.31, - "deg": 336, - "gust": 7.04 + "speed": 1.79, + "deg": 225, + "gust": 4.47 }, "clouds": { - "all": 94 + "all": 100 }, "weather": [ { @@ -8987,22 +9080,22 @@ ] }, { - "dt": 1741935600, + "dt": 1744621200, "main": { - "temp": -1.12, - "feels_like": -4.99, - "pressure": 1004, - "humidity": 91, - "temp_min": -1.12, - "temp_max": -1.12 + "temp": 7.49, + "feels_like": 6.98, + "pressure": 1001, + "humidity": 76, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 3.16, - "deg": 337, - "gust": 7.34 + "speed": 1.34, + "deg": 225, + "gust": 4.02 }, "clouds": { - "all": 95 + "all": 100 }, "weather": [ { @@ -9014,22 +9107,22 @@ ] }, { - "dt": 1741939200, + "dt": 1744624800, "main": { - "temp": -0.56, - "feels_like": -4.8, - "pressure": 1005, - "humidity": 87, - "temp_min": -0.56, - "temp_max": -0.56 + "temp": 8.05, + "feels_like": 7.12, + "pressure": 1002, + "humidity": 68, + "temp_min": 7.03, + "temp_max": 8.33 }, "wind": { - "speed": 3.76, - "deg": 328, - "gust": 7 + "speed": 1.79, + "deg": 225, + "gust": 4.47 }, "clouds": { - "all": 93 + "all": 100 }, "weather": [ { @@ -9041,22 +9134,22 @@ ] }, { - "dt": 1741942800, + "dt": 1744628400, "main": { - "temp": -0.01, - "feels_like": -0.01, - "pressure": 1006, - "humidity": 85, - "temp_min": -0.01, - "temp_max": -0.01 + "temp": 8.91, + "feels_like": 8.11, + "pressure": 1002, + "humidity": 66, + "temp_min": 8.03, + "temp_max": 9.44 }, "wind": { - "speed": 0.45, - "deg": 135, - "gust": 1.34 + "speed": 1.79, + "deg": 225, + "gust": 4.47 }, "clouds": { - "all": 94 + "all": 100 }, "weather": [ { @@ -9068,547 +9161,508 @@ ] }, { - "dt": 1741946400, + "dt": 1744632000, "main": { - "temp": 0.55, - "feels_like": 0.55, - "pressure": 1006, - "humidity": 84, - "temp_min": 0.55, - "temp_max": 0.55 + "temp": 7.71, + "feels_like": 5.68, + "pressure": 1003, + "humidity": 73, + "temp_min": 7.22, + "temp_max": 8.29 }, "wind": { - "speed": 0.45, - "deg": 180, - "gust": 1.79 + "speed": 3.13, + "deg": 315, + "gust": 6.71 }, "clouds": { - "all": 96 + "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.69 + } }, { - "dt": 1741950000, + "dt": 1744635600, "main": { - "temp": 1.11, - "feels_like": 1.11, - "pressure": 1007, - "humidity": 84, - "temp_min": 1.11, - "temp_max": 1.11 + "temp": 9.71, + "feels_like": 9.49, + "pressure": 1004, + "humidity": 63, + "temp_min": 8.03, + "temp_max": 9.99 }, "wind": { - "speed": 0.45, - "deg": 203, - "gust": 1.34 + "speed": 1.34, + "deg": 338, + "gust": 4.02 }, "clouds": { - "all": 96 + "all": 68 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1741953600, + "dt": 1744639200, "main": { - "temp": 1.11, - "feels_like": -0.23, - "pressure": 1007, - "humidity": 84, - "temp_min": 1.11, - "temp_max": 1.11 + "temp": 8.56, + "feels_like": 8.19, + "pressure": 1005, + "humidity": 71, + "temp_min": 8.33, + "temp_max": 10.03 }, "wind": { "speed": 1.34, - "deg": 248, - "gust": 4.02 + "deg": 315, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 31 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1741957200, + "dt": 1744642800, "main": { - "temp": 1.38, - "feels_like": 0.07, - "pressure": 1010, - "humidity": 83, - "temp_min": 0.03, - "temp_max": 1.66 + "temp": 8.91, + "feels_like": 8.91, + "pressure": 1005, + "humidity": 68, + "temp_min": 8.29, + "temp_max": 9.44 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.58 + "speed": 0.89, + "deg": 315, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 25 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1741960800, + "dt": 1744646400, "main": { - "temp": 1.13, - "feels_like": -0.21, - "pressure": 1010, - "humidity": 82, - "temp_min": 0.03, - "temp_max": 1.66 + "temp": 9.71, + "feels_like": 9.71, + "pressure": 1006, + "humidity": 59, + "temp_min": 9.03, + "temp_max": 9.99 }, "wind": { - "speed": 1.34, - "deg": 248, - "gust": 3.58 + "speed": 0.45, + "deg": 0, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 18 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02d" } - ], - "rain": { - "1h": 0.25 - } + ] }, { - "dt": 1741964400, + "dt": 1744650000, "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 1010, - "humidity": 82, - "temp_min": 0.51, - "temp_max": 1.03 + "temp": 7.96, + "feels_like": 7.96, + "pressure": 1006, + "humidity": 71, + "temp_min": 7.22, + "temp_max": 9.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.68 + "speed": 0.45, + "deg": 23, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 14 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02d" } - ], - "snow": { - "1h": 0.51 - } + ] }, { - "dt": 1741968000, + "dt": 1744653600, "main": { - "temp": -0.29, - "feels_like": -0.29, - "pressure": 1010, - "humidity": 87, - "temp_min": -0.6, - "temp_max": 2.03 + "temp": 6.89, + "feels_like": 6.3, + "pressure": 1007, + "humidity": 74, + "temp_min": 6.66, + "temp_max": 9.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.68 + "speed": 1.34, + "deg": 90, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 13 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02d" } - ], - "snow": { - "1h": 0.29 - } + ] }, { - "dt": 1741971600, + "dt": 1744657200, "main": { - "temp": -0.29, - "feels_like": -0.29, - "pressure": 1010, - "humidity": 87, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 6.34, + "feels_like": 6.34, + "pressure": 1007, + "humidity": 78, + "temp_min": 6.11, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 124, - "gust": 2.68 + "speed": 0.45, + "deg": 113, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 6 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 800, + "main": "Clear", + "description": "clear sky", + "icon": "01n" } - ], - "snow": { - "1h": 0.3 - } + ] }, { - "dt": 1741975200, + "dt": 1744660800, "main": { - "temp": -0.84, - "feels_like": -0.84, - "pressure": 1010, - "humidity": 89, - "temp_min": -1.16, - "temp_max": 1.03 + "temp": 5.22, + "feels_like": 2.78, + "pressure": 1008, + "humidity": 79, + "temp_min": 4.99, + "temp_max": 5.51 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.68 + "speed": 2.98, + "deg": 109, + "gust": 2.94 }, "clouds": { - "all": 100 + "all": 4 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 800, + "main": "Clear", + "description": "clear sky", + "icon": "01n" } - ], - "snow": { - "1h": 0.15 - } + ] }, { - "dt": 1741978800, + "dt": 1744664400, "main": { - "temp": -0.54, - "feels_like": -0.54, - "pressure": 1010, - "humidity": 88, - "temp_min": -1.16, - "temp_max": 1.03 + "temp": 4.42, + "feels_like": 4.42, + "pressure": 1008, + "humidity": 82, + "temp_min": 4.03, + "temp_max": 4.44 }, "wind": { - "speed": 0.89, - "deg": 153, - "gust": 3.58 + "speed": 0.45, + "deg": 61, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 6 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 800, + "main": "Clear", + "description": "clear sky", + "icon": "01n" } - ], - "snow": { - "1h": 0.38 - } + ] }, { - "dt": 1741982400, + "dt": 1744668000, "main": { - "temp": -0.84, - "feels_like": -2.44, - "pressure": 1010, - "humidity": 87, - "temp_min": -1.16, - "temp_max": 1.03 + "temp": 4.16, + "feels_like": 4.16, + "pressure": 1008, + "humidity": 82, + "temp_min": 3.03, + "temp_max": 4.44 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.58 + "speed": 0.45, + "deg": 180, + "gust": 0.45 }, "clouds": { - "all": 100 + "all": 7 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 800, + "main": "Clear", + "description": "clear sky", + "icon": "01n" } - ], - "snow": { - "1h": 0.15 - } + ] }, { - "dt": 1741986000, + "dt": 1744671600, "main": { - "temp": -0.58, - "feels_like": -2.14, - "pressure": 1010, - "humidity": 89, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 3.91, + "feels_like": 0.79, + "pressure": 1008, + "humidity": 82, + "temp_min": 3.03, + "temp_max": 4.44 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 + "speed": 3.57, + "deg": 87, + "gust": 4.51 }, "clouds": { - "all": 100 + "all": 12 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" } - ], - "snow": { - "1h": 0.29 - } + ] }, { - "dt": 1741989600, + "dt": 1744675200, "main": { - "temp": -0.29, - "feels_like": -2.52, - "pressure": 1010, - "humidity": 90, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 3.65, + "feels_like": 0.61, + "pressure": 1008, + "humidity": 81, + "temp_min": 2.73, + "temp_max": 4.44 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 3.58 + "speed": 3.37, + "deg": 95, + "gust": 4.32 }, "clouds": { - "all": 100 + "all": 24 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" } - ], - "snow": { - "1h": 0.59 - } + ] }, { - "dt": 1741993200, + "dt": 1744678800, "main": { - "temp": -0.29, - "feels_like": -2.52, - "pressure": 1010, - "humidity": 91, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 3.35, + "feels_like": 1.02, + "pressure": 1008, + "humidity": 82, + "temp_min": 2.73, + "temp_max": 4.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 3.58 + "speed": 2.42, + "deg": 102, + "gust": 3.01 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.15 - } + ] }, { - "dt": 1741996800, + "dt": 1744682400, "main": { - "temp": -0.29, - "feels_like": -1.82, - "pressure": 1009, - "humidity": 91, - "temp_min": -0.6, - "temp_max": 2.03 + "temp": 3.4, + "feels_like": 1.19, + "pressure": 1008, + "humidity": 81, + "temp_min": 2.18, + "temp_max": 4.44 }, "wind": { - "speed": 1.34, - "deg": 106, - "gust": 4.02 + "speed": 2.3, + "deg": 105, + "gust": 2.72 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.14 - } + ] }, { - "dt": 1742000400, + "dt": 1744686000, "main": { - "temp": 0.27, - "feels_like": -1.87, - "pressure": 1009, - "humidity": 89, - "temp_min": -0.05, - "temp_max": 2.03 + "temp": 3.65, + "feels_like": 1.37, + "pressure": 1008, + "humidity": 82, + "temp_min": 2.73, + "temp_max": 4.44 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 5.36 + "speed": 2.42, + "deg": 106, + "gust": 2.75 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.36 - } + ] }, { - "dt": 1742004000, + "dt": 1744689600, "main": { - "temp": 0.53, - "feels_like": -1.57, - "pressure": 1009, - "humidity": 87, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 3.91, + "feels_like": 1.77, + "pressure": 1008, + "humidity": 80, + "temp_min": 3.29, + "temp_max": 4.44 }, "wind": { - "speed": 1.79, - "deg": 5, - "gust": 4.47 + "speed": 2.33, + "deg": 105, + "gust": 2.69 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.12 - } + ] }, { - "dt": 1742007600, + "dt": 1744693200, "main": { - "temp": 0.55, - "feels_like": -2.09, + "temp": 4.2, + "feels_like": 2.34, "pressure": 1008, - "humidity": 88, - "temp_min": 0.51, - "temp_max": 0.55 + "humidity": 79, + "temp_min": 3.29, + "temp_max": 4.99 }, "wind": { - "speed": 2.24, - "deg": 208, - "gust": 3.58 + "speed": 2.09, + "deg": 99, + "gust": 2.57 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 1.5 - } + ] }, { - "dt": 1742011200, + "dt": 1744696800, "main": { - "temp": 0.83, - "feels_like": -1.22, - "pressure": 1008, - "humidity": 87, - "temp_min": 0.51, - "temp_max": 3.03 + "temp": 5.87, + "feels_like": 3.94, + "pressure": 1009, + "humidity": 74, + "temp_min": 4.95, + "temp_max": 6.66 }, "wind": { - "speed": 1.79, - "deg": 132, - "gust": 5.36 + "speed": 2.49, + "deg": 84, + "gust": 3.08 }, "clouds": { "all": 100 @@ -9618,24 +9672,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742014800, + "dt": 1744700400, "main": { - "temp": 1.09, - "feels_like": -2.3, - "pressure": 1007, - "humidity": 83, - "temp_min": 1.07, - "temp_max": 3.03 + "temp": 7.2, + "feels_like": 5.37, + "pressure": 1009, + "humidity": 74, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 3.13, - "deg": 203, - "gust": 7.15 + "speed": 2.68, + "deg": 90, + "gust": 3.21 }, "clouds": { "all": 100 @@ -9645,24 +9699,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742018400, + "dt": 1744704000, "main": { - "temp": 1.64, - "feels_like": -1.98, - "pressure": 1006, - "humidity": 82, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 8.51, + "feels_like": 6.77, + "pressure": 1009, + "humidity": 70, + "temp_min": 7.77, + "temp_max": 11.03 }, "wind": { - "speed": 3.58, - "deg": 203, - "gust": 8.49 + "speed": 2.92, + "deg": 86, + "gust": 3.6 }, "clouds": { "all": 100 @@ -9677,49 +9731,46 @@ ] }, { - "dt": 1742022000, + "dt": 1744707600, "main": { - "temp": 2.2, - "feels_like": -1.3, - "pressure": 1006, - "humidity": 82, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 7.77, + "feels_like": 7.77, + "pressure": 1009, + "humidity": 77, + "temp_min": 7.77, + "temp_max": 9.95 }, "wind": { - "speed": 3.58, - "deg": 225, - "gust": 7.15 + "speed": 0.45, + "deg": 248, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.12 - } + ] }, { - "dt": 1742025600, + "dt": 1744711200, "main": { - "temp": 2.75, - "feels_like": -0.63, - "pressure": 1005, - "humidity": 82, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 13.03, + "feels_like": 12.03, + "pressure": 1009, + "humidity": 63, + "temp_min": 13.03, + "temp_max": 13.03 }, "wind": { - "speed": 3.58, - "deg": 349, - "gust": 7.15 + "speed": 2.5, + "deg": 90, + "gust": 3.7 }, "clouds": { "all": 100 @@ -9734,79 +9785,73 @@ ] }, { - "dt": 1742029200, + "dt": 1744714800, "main": { - "temp": 2.45, - "feels_like": -0.29, - "pressure": 1005, - "humidity": 87, - "temp_min": 2.22, - "temp_max": 4.03 + "temp": 14.03, + "feels_like": 13.06, + "pressure": 1009, + "humidity": 60, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 2.68, - "deg": 248, - "gust": 9.39 + "speed": 2.8, + "deg": 88, + "gust": 4.18 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 3.07 - } + ] }, { - "dt": 1742032800, + "dt": 1744718400, "main": { - "temp": 2.49, - "feels_like": 0.69, - "pressure": 1006, - "humidity": 91, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 14.03, + "feels_like": 13.06, + "pressure": 1010, + "humidity": 60, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 4.02 + "speed": 2.48, + "deg": 96, + "gust": 4.22 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.59 - } + ] }, { - "dt": 1742036400, + "dt": 1744722000, "main": { - "temp": 3.31, - "feels_like": 0.38, - "pressure": 1006, - "humidity": 89, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 12.18, + "feels_like": 10.63, + "pressure": 1010, + "humidity": 45, + "temp_min": 12.18, + "temp_max": 13.03 }, "wind": { - "speed": 3.13, - "deg": 248, - "gust": 8.49 + "speed": 1.79, + "deg": 135, + "gust": 5.36 }, "clouds": { "all": 100 @@ -9821,19 +9866,19 @@ ] }, { - "dt": 1742040000, + "dt": 1744725600, "main": { - "temp": 3.86, - "feels_like": 2.28, - "pressure": 1005, - "humidity": 88, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 12.49, + "feels_like": 10.97, + "pressure": 1010, + "humidity": 45, + "temp_min": 12.18, + "temp_max": 13.03 }, "wind": { "speed": 1.79, - "deg": 225, - "gust": 4.47 + "deg": 203, + "gust": 5.36 }, "clouds": { "all": 100 @@ -9848,19 +9893,19 @@ ] }, { - "dt": 1742043600, + "dt": 1744729200, "main": { - "temp": 3.86, - "feels_like": 1.79, - "pressure": 1005, - "humidity": 87, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 14.03, + "feels_like": 13.06, + "pressure": 1010, + "humidity": 60, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 2.24, - "deg": 248, - "gust": 4.92 + "speed": 3.17, + "deg": 148, + "gust": 5.46 }, "clouds": { "all": 100 @@ -9875,19 +9920,19 @@ ] }, { - "dt": 1742047200, + "dt": 1744732800, "main": { - "temp": 4.97, - "feels_like": 2.38, - "pressure": 1004, - "humidity": 80, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 14.03, + "feels_like": 13.08, + "pressure": 1009, + "humidity": 61, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 3.13, - "deg": 225, - "gust": 8.94 + "speed": 3.15, + "deg": 149, + "gust": 5.34 }, "clouds": { "all": 100 @@ -9902,52 +9947,49 @@ ] }, { - "dt": 1742050800, + "dt": 1744736400, "main": { - "temp": 3.56, - "feels_like": -0.18, - "pressure": 1005, - "humidity": 88, - "temp_min": 3.33, - "temp_max": 5.03 + "temp": 12.77, + "feels_like": 11.28, + "pressure": 1009, + "humidity": 45, + "temp_min": 12.77, + "temp_max": 14.03 }, "wind": { - "speed": 4.47, - "deg": 270, - "gust": 10.28 + "speed": 2.87, + "deg": 138, + "gust": 4.25 }, "clouds": { - "all": 100 + "all": 91 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.11 - } + ] }, { - "dt": 1742054400, + "dt": 1744740000, "main": { - "temp": 2.75, - "feels_like": 0.07, - "pressure": 1006, - "humidity": 90, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 14.03, + "feels_like": 13.21, + "pressure": 1010, + "humidity": 66, + "temp_min": 14.03, + "temp_max": 14.03 }, "wind": { - "speed": 2.68, - "deg": 248, - "gust": 5.81 + "speed": 3.16, + "deg": 127, + "gust": 3.62 }, "clouds": { - "all": 100 + "all": 92 }, "weather": [ { @@ -9959,45 +10001,45 @@ ] }, { - "dt": 1742058000, + "dt": 1744743600, "main": { - "temp": 2.75, - "feels_like": -0.92, - "pressure": 1006, - "humidity": 87, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 10.83, + "feels_like": 9.04, + "pressure": 1010, + "humidity": 41, + "temp_min": 10.51, + "temp_max": 12.03 }, "wind": { - "speed": 4.02, - "deg": 270, - "gust": 7.6 + "speed": 2.68, + "deg": 185, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04d" + "icon": "04n" } ] }, { - "dt": 1742061600, + "dt": 1744747200, "main": { - "temp": 1.09, - "feels_like": -0.92, - "pressure": 1008, - "humidity": 91, - "temp_min": 1.07, - "temp_max": 2.03 + "temp": 10.02, + "feels_like": 8.3, + "pressure": 1010, + "humidity": 47, + "temp_min": 9.4, + "temp_max": 12.03 }, "wind": { "speed": 1.79, - "deg": 315, + "deg": 131, "gust": 4.47 }, "clouds": { @@ -10005,775 +10047,718 @@ }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 1.31 - } + ] }, { - "dt": 1742065200, + "dt": 1744750800, "main": { - "temp": 0.53, - "feels_like": -0.89, + "temp": 8.91, + "feels_like": 8.91, "pressure": 1010, - "humidity": 92, - "temp_min": 0.51, - "temp_max": 2.03 + "humidity": 53, + "temp_min": 8.29, + "temp_max": 11.03 }, "wind": { - "speed": 1.34, - "deg": 293, - "gust": 4.02 + "speed": 0.89, + "deg": 129, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 1.33 - } + ] }, { - "dt": 1742068800, + "dt": 1744754400, "main": { - "temp": 0.27, - "feels_like": -2.88, - "pressure": 1011, - "humidity": 93, - "temp_min": -0.05, - "temp_max": 2.03 + "temp": 8.29, + "feels_like": 8.29, + "pressure": 1009, + "humidity": 57, + "temp_min": 8.29, + "temp_max": 11.03 }, "wind": { - "speed": 2.68, - "deg": 315, - "gust": 5.81 + "speed": 0.45, + "deg": 180, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 96 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.95 - } + ] }, { - "dt": 1742072400, + "dt": 1744758000, "main": { - "temp": -0.03, - "feels_like": -2.78, - "pressure": 1012, - "humidity": 92, - "temp_min": -0.05, - "temp_max": 2.03 + "temp": 8.29, + "feels_like": 8.29, + "pressure": 1009, + "humidity": 59, + "temp_min": 8.29, + "temp_max": 11.03 }, "wind": { - "speed": 2.24, - "deg": 293, + "speed": 0.89, + "deg": 135, "gust": 4.02 }, "clouds": { - "all": 93 + "all": 97 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.42 - } + ] }, { - "dt": 1742076000, + "dt": 1744761600, "main": { - "temp": -0.58, - "feels_like": -2.85, - "pressure": 1013, - "humidity": 92, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 8.84, + "feels_like": 8.84, + "pressure": 1008, + "humidity": 59, + "temp_min": 8.84, + "temp_max": 11.03 }, "wind": { - "speed": 1.79, - "deg": 293, - "gust": 4.02 + "speed": 0.89, + "deg": 135, + "gust": 3.13 }, "clouds": { - "all": 85 + "all": 97 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.24 - } + ] }, { - "dt": 1742079600, + "dt": 1744761600, "main": { - "temp": -1.14, - "feels_like": -4.08, - "pressure": 1014, - "humidity": 90, - "temp_min": -1.16, - "temp_max": 0.03 + "temp": 8.84, + "feels_like": 8.84, + "pressure": 1008, + "humidity": 59, + "temp_min": 8.84, + "temp_max": 11.03 }, "wind": { - "speed": 2.24, - "deg": 315, - "gust": 4.47 + "speed": 0.89, + "deg": 135, + "gust": 3.13 }, "clouds": { - "all": 82 + "all": 97 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.36 - } + ] }, { - "dt": 1742079600, + "dt": 1744765200, "main": { - "temp": -1.14, - "feels_like": -4.08, - "pressure": 1014, - "humidity": 90, - "temp_min": -1.16, - "temp_max": 0.03 + "temp": 9.2, + "feels_like": 9.2, + "pressure": 1008, + "humidity": 59, + "temp_min": 8.29, + "temp_max": 11.03 }, "wind": { - "speed": 2.24, - "deg": 315, - "gust": 4.47 - }, - "clouds": { - "all": 82 + "speed": 0.45, + "deg": 0, + "gust": 3.13 + }, + "clouds": { + "all": 97 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.36 - } + ] }, { - "dt": 1742083200, + "dt": 1744768800, "main": { - "temp": -1.44, - "feels_like": -4.92, - "pressure": 1014, - "humidity": 85, - "temp_min": -1.67, - "temp_max": 0.03 + "temp": 9.71, + "feels_like": 8.67, + "pressure": 1007, + "humidity": 60, + "temp_min": 9.4, + "temp_max": 11.03 }, "wind": { - "speed": 2.68, - "deg": 315, - "gust": 6.26 + "speed": 2.24, + "deg": 195, + "gust": 5.36 }, "clouds": { - "all": 75 + "all": 98 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.1 - } + ] }, { - "dt": 1742086800, + "dt": 1744772400, "main": { - "temp": -1.44, - "feels_like": -5.35, - "pressure": 1015, - "humidity": 83, - "temp_min": -1.67, - "temp_max": 0.03 + "temp": 10.27, + "feels_like": 8.97, + "pressure": 1007, + "humidity": 62, + "temp_min": 9.95, + "temp_max": 11.03 }, "wind": { - "speed": 3.13, - "deg": 293, - "gust": 6.71 + "speed": 1.79, + "deg": 136, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.63 - } + ] }, { - "dt": 1742090400, + "dt": 1744776000, "main": { - "temp": -1.95, - "feels_like": -6.35, - "pressure": 1016, - "humidity": 88, - "temp_min": -2.27, - "temp_max": -0.97 + "temp": 9.95, + "feels_like": 9.95, + "pressure": 1007, + "humidity": 61, + "temp_min": 9.95, + "temp_max": 11.03 }, "wind": { - "speed": 3.58, - "deg": 293, - "gust": 7.15 + "speed": 0.45, + "deg": 180, + "gust": 1.79 }, "clouds": { - "all": 91 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } ], - "snow": { - "1h": 1.32 + "rain": { + "1h": 2.24 } }, { - "dt": 1742094000, + "dt": 1744779600, "main": { - "temp": -1.95, - "feels_like": -6.35, - "pressure": 1017, - "humidity": 89, - "temp_min": -2.27, - "temp_max": -1.67 + "temp": 10.22, + "feels_like": 9.07, + "pressure": 1007, + "humidity": 68, + "temp_min": 9.99, + "temp_max": 11.03 }, "wind": { - "speed": 3.58, - "deg": 293, - "gust": 8.05 + "speed": 1.34, + "deg": 113, + "gust": 3.13 }, "clouds": { - "all": 92 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } ], - "snow": { - "1h": 0.62 + "rain": { + "1h": 2.16 } }, { - "dt": 1742097600, + "dt": 1744783200, "main": { - "temp": -2.25, - "feels_like": -6.72, - "pressure": 1018, - "humidity": 87, - "temp_min": -2.27, - "temp_max": -0.97 + "temp": 10.53, + "feels_like": 9.36, + "pressure": 1007, + "humidity": 66, + "temp_min": 10.51, + "temp_max": 11.03 }, "wind": { - "speed": 3.58, - "deg": 315, - "gust": 6.71 + "speed": 0.89, + "deg": 113, + "gust": 1.34 }, "clouds": { - "all": 93 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { - "1h": 0.95 + "rain": { + "1h": 0.24 } }, { - "dt": 1742101200, + "dt": 1744786800, "main": { - "temp": -2.51, - "feels_like": -5.69, - "pressure": 1018, - "humidity": 86, - "temp_min": -2.82, - "temp_max": -1.97 + "temp": 10.53, + "feels_like": 9.41, + "pressure": 1007, + "humidity": 68, + "temp_min": 10.51, + "temp_max": 11.03 }, "wind": { - "speed": 2.24, - "deg": 315, - "gust": 4.92 + "speed": 0.45, + "deg": 205, + "gust": 1.34 }, "clouds": { - "all": 90 + "all": 95 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { - "1h": 0.52 + "rain": { + "1h": 0.69 } }, { - "dt": 1742104800, + "dt": 1744790400, "main": { - "temp": -2.51, - "feels_like": -2.51, - "pressure": 1019, - "humidity": 90, - "temp_min": -2.82, - "temp_max": -1.97 + "temp": 11.64, + "feels_like": 10.61, + "pressure": 1007, + "humidity": 67, + "temp_min": 11.62, + "temp_max": 14.03 }, "wind": { "speed": 0.89, - "deg": 293, - "gust": 4.47 + "deg": 338, + "gust": 1.79 }, "clouds": { - "all": 94 + "all": 97 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 2.04 - } + ] }, { - "dt": 1742108400, + "dt": 1744794000, "main": { - "temp": -1.91, - "feels_like": -1.91, - "pressure": 1019, - "humidity": 89, - "temp_min": -2.82, - "temp_max": -1.12 + "temp": 12.75, + "feels_like": 11.8, + "pressure": 1006, + "humidity": 66, + "temp_min": 12.73, + "temp_max": 14.03 }, "wind": { - "speed": 0.45, - "deg": 293, - "gust": 1.34 + "speed": 0.89, + "deg": 90, + "gust": 2.68 }, "clouds": { - "all": 59 + "all": 98 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.25 - } + ] }, { - "dt": 1742112000, + "dt": 1744797600, "main": { - "temp": -0.54, - "feels_like": -3.38, - "pressure": 1020, - "humidity": 85, - "temp_min": -1.16, - "temp_max": -0.01 + "temp": 14.4, + "feels_like": 13.59, + "pressure": 1006, + "humidity": 65, + "temp_min": 14.4, + "temp_max": 16.03 }, "wind": { - "speed": 2.24, - "deg": 315, - "gust": 5.36 + "speed": 1.34, + "deg": 113, + "gust": 4.02 }, "clouds": { - "all": 79 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.74 - } + ] }, { - "dt": 1742115600, + "dt": 1744801200, "main": { - "temp": -1.4, - "feels_like": -3.8, - "pressure": 1021, - "humidity": 91, - "temp_min": -1.71, - "temp_max": 0.03 + "temp": 18.03, + "feels_like": 17.69, + "pressure": 1005, + "humidity": 69, + "temp_min": 18.03, + "temp_max": 18.03 }, "wind": { - "speed": 1.79, - "deg": 315, - "gust": 4.02 + "speed": 5.52, + "deg": 110, + "gust": 10.7 }, "clouds": { - "all": 86 + "all": 98 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 2.54 - } + ] }, { - "dt": 1742119200, + "dt": 1744804800, "main": { - "temp": -1.4, - "feels_like": -4.39, - "pressure": 1022, - "humidity": 93, - "temp_min": -1.71, - "temp_max": -0.97 + "temp": 15.51, + "feels_like": 14.71, + "pressure": 1005, + "humidity": 61, + "temp_min": 15.51, + "temp_max": 17.03 }, "wind": { - "speed": 2.24, - "deg": 315, - "gust": 5.36 + "speed": 3.58, + "deg": 135, + "gust": 9.39 }, "clouds": { - "all": 90 + "all": 98 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 3.79 - } + ] }, { - "dt": 1742122800, + "dt": 1744808400, "main": { - "temp": -0.84, - "feels_like": -2.44, - "pressure": 1023, - "humidity": 91, - "temp_min": -1.16, - "temp_max": 1.03 + "temp": 15.83, + "feels_like": 15.09, + "pressure": 1005, + "humidity": 62, + "temp_min": 15.51, + "temp_max": 17.03 }, "wind": { - "speed": 1.34, - "deg": 293, - "gust": 3.13 + "speed": 3.13, + "deg": 113, + "gust": 5.81 }, "clouds": { - "all": 92 + "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.15 - } + ] }, { - "dt": 1742126400, + "dt": 1744812000, "main": { - "temp": 0.02, - "feels_like": -2.16, - "pressure": 1024, - "humidity": 91, - "temp_min": -0.97, - "temp_max": 0.55 + "temp": 15.83, + "feels_like": 15.11, + "pressure": 1005, + "humidity": 63, + "temp_min": 15.51, + "temp_max": 17.03 }, "wind": { - "speed": 1.79, - "deg": 23, - "gust": 4.92 + "speed": 3.13, + "deg": 113, + "gust": 6.71 }, "clouds": { - "all": 94 + "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } ], - "snow": { - "1h": 0.13 + "rain": { + "1h": 0.14 } }, { - "dt": 1742130000, + "dt": 1744815600, "main": { - "temp": 0.57, - "feels_like": -1.52, - "pressure": 1024, - "humidity": 87, - "temp_min": -0.05, - "temp_max": 1.11 + "temp": 15.27, + "feels_like": 14.63, + "pressure": 1005, + "humidity": 68, + "temp_min": 14.95, + "temp_max": 16.03 }, "wind": { - "speed": 1.79, - "deg": 315, - "gust": 4.47 + "speed": 2.68, + "deg": 158, + "gust": 7.6 }, "clouds": { - "all": 95 + "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } ], - "snow": { - "1h": 0.38 + "rain": { + "1h": 2.2 } }, { - "dt": 1742133600, + "dt": 1744819200, "main": { - "temp": 0.53, - "feels_like": -1.57, - "pressure": 1025, - "humidity": 85, - "temp_min": 0.51, - "temp_max": 1.03 + "temp": 13.35, + "feels_like": 12.7, + "pressure": 1005, + "humidity": 75, + "temp_min": 12.73, + "temp_max": 15.03 }, "wind": { - "speed": 1.79, - "deg": 293, - "gust": 4.92 + "speed": 3.58, + "deg": 168, + "gust": 8.05 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } ], - "snow": { - "1h": 0.51 + "rain": { + "1h": 1.06 } }, { - "dt": 1742137200, + "dt": 1744822800, "main": { - "temp": 0.22, - "feels_like": -1.24, - "pressure": 1025, - "humidity": 82, - "temp_min": -0.01, - "temp_max": 2.03 + "temp": 13.6, + "feels_like": 12.87, + "pressure": 1005, + "humidity": 71, + "temp_min": 13.29, + "temp_max": 14.03 }, "wind": { - "speed": 1.34, - "deg": 248, - "gust": 2.68 + "speed": 2.68, + "deg": 191, + "gust": 5.81 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.76 - } + ] }, { - "dt": 1742140800, + "dt": 1744826400, "main": { - "temp": -0.58, - "feels_like": -2.14, - "pressure": 1026, - "humidity": 83, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 13.86, + "feels_like": 13.13, + "pressure": 1007, + "humidity": 70, + "temp_min": 13.84, + "temp_max": 14.03 }, "wind": { - "speed": 1.34, - "deg": 135, - "gust": 4.02 + "speed": 2.24, + "deg": 146, + "gust": 5.36 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.51 - } + ] }, { - "dt": 1742144400, + "dt": 1744830000, "main": { - "temp": -1.09, - "feels_like": -1.09, - "pressure": 1026, - "humidity": 84, - "temp_min": -1.71, - "temp_max": 1.03 + "temp": 12.73, + "feels_like": 11.94, + "pressure": 1007, + "humidity": 72, + "temp_min": 12.73, + "temp_max": 15.03 }, "wind": { - "speed": 0.89, - "deg": 180, + "speed": 1.34, + "deg": 135, "gust": 4.02 }, "clouds": { - "all": 99 + "all": 62 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.18 - } + ] }, { - "dt": 1742148000, + "dt": 1744833600, "main": { - "temp": -1.4, - "feels_like": -1.4, - "pressure": 1027, - "humidity": 86, - "temp_min": -1.71, - "temp_max": 0.03 + "temp": 11.64, + "feels_like": 10.87, + "pressure": 1008, + "humidity": 77, + "temp_min": 11.62, + "temp_max": 14.03 }, "wind": { - "speed": 0.45, + "speed": 1.34, "deg": 158, - "gust": 1.79 + "gust": 3.13 }, "clouds": { - "all": 97 + "all": 35 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "snow": { - "1h": 0.12 - } + ] }, { - "dt": 1742151600, + "dt": 1744837200, "main": { - "temp": -1.4, - "feels_like": -1.4, - "pressure": 1028, - "humidity": 89, - "temp_min": -1.71, - "temp_max": 0.03 + "temp": 10.78, + "feels_like": 9.95, + "pressure": 1008, + "humidity": 78, + "temp_min": 10.55, + "temp_max": 13.03 }, "wind": { "speed": 0.89, @@ -10781,391 +10766,355 @@ "gust": 2.24 }, "clouds": { - "all": 100 + "all": 24 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" - } - ], - "snow": { - "1h": 0.14 - } + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" + } + ] }, { - "dt": 1742155200, + "dt": 1744840800, "main": { - "temp": -1.65, - "feels_like": -3.36, - "pressure": 1028, - "humidity": 90, - "temp_min": -2.27, - "temp_max": -0.97 + "temp": 9.97, + "feels_like": 9.97, + "pressure": 1009, + "humidity": 79, + "temp_min": 9.95, + "temp_max": 12.03 }, "wind": { - "speed": 1.34, - "deg": 304, - "gust": 4.02 + "speed": 0.34, + "deg": 230, + "gust": 0.77 }, "clouds": { - "all": 100 + "all": 22 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" } - ], - "snow": { - "1h": 0.58 - } + ] }, { - "dt": 1742158800, + "dt": 1744844400, "main": { - "temp": -1.91, - "feels_like": -1.91, - "pressure": 1028, - "humidity": 91, - "temp_min": -2.82, - "temp_max": 0.03 + "temp": 9.2, + "feels_like": 9.2, + "pressure": 1009, + "humidity": 84, + "temp_min": 8.29, + "temp_max": 11.03 }, "wind": { - "speed": 0.89, - "deg": 162, - "gust": 2.24 + "speed": 0.45, + "deg": 180, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 29 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742162400, + "dt": 1744848000, "main": { - "temp": -1.91, - "feels_like": -1.91, - "pressure": 1028, - "humidity": 92, - "temp_min": -2.82, - "temp_max": -0.97 + "temp": 8.65, + "feels_like": 8.65, + "pressure": 1009, + "humidity": 84, + "temp_min": 7.73, + "temp_max": 10.03 }, "wind": { - "speed": 0.89, - "deg": 158, - "gust": 2.24 + "speed": 0.94, + "deg": 41, + "gust": 1.26 }, "clouds": { - "all": 100 + "all": 39 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "snow": { - "1h": 0.16 - } + ] }, { - "dt": 1742166000, + "dt": 1744851600, "main": { - "temp": -1.65, - "feels_like": -1.65, - "pressure": 1027, - "humidity": 91, - "temp_min": -2.27, - "temp_max": 1.03 + "temp": 7.54, + "feels_like": 7.54, + "pressure": 1009, + "humidity": 84, + "temp_min": 6.62, + "temp_max": 8.33 }, "wind": { - "speed": 0.89, - "deg": 158, - "gust": 2.68 + "speed": 0.74, + "deg": 228, + "gust": 0.92 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.2 - } + ] }, { - "dt": 1742169600, + "dt": 1744855200, "main": { - "temp": -2.16, - "feels_like": -2.16, - "pressure": 1027, - "humidity": 90, - "temp_min": -3.38, - "temp_max": 0.03 + "temp": 7.58, + "feels_like": 7.58, + "pressure": 1009, + "humidity": 85, + "temp_min": 6.07, + "temp_max": 8.88 }, "wind": { - "speed": 0.45, - "deg": 143, - "gust": 2.24 + "speed": 0.81, + "deg": 266, + "gust": 1.2 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.46 - } + ] }, { - "dt": 1742173200, + "dt": 1744858800, "main": { - "temp": -1.05, - "feels_like": -1.05, - "pressure": 1027, - "humidity": 90, - "temp_min": -2.27, - "temp_max": 0.03 + "temp": 7.33, + "feels_like": 7.33, + "pressure": 1010, + "humidity": 85, + "temp_min": 5.51, + "temp_max": 8.88 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 2.68 + "speed": 1.22, + "deg": 180, + "gust": 1.01 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "snow": { - "1h": 0.56 - } + ] }, { - "dt": 1742176800, + "dt": 1744862400, "main": { - "temp": -1.09, - "feels_like": -2.72, - "pressure": 1026, - "humidity": 90, - "temp_min": -1.71, - "temp_max": 0.03 + "temp": 7.29, + "feels_like": 7.29, + "pressure": 1009, + "humidity": 85, + "temp_min": 6.07, + "temp_max": 8.33 }, "wind": { - "speed": 1.34, - "deg": 183, - "gust": 3.58 + "speed": 0.45, + "deg": 180, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.67 - } + ] }, { - "dt": 1742180400, + "dt": 1744866000, "main": { - "temp": -0.54, - "feels_like": -0.54, - "pressure": 1026, - "humidity": 90, - "temp_min": -1.16, - "temp_max": 1.03 + "temp": 6.98, + "feels_like": 6.98, + "pressure": 1009, + "humidity": 87, + "temp_min": 6.07, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 158, - "gust": 3.13 + "speed": 0.13, + "deg": 117, + "gust": 0.43 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.49 - } + ] }, { - "dt": 1742184000, + "dt": 1744869600, "main": { - "temp": 0.02, - "feels_like": 0.02, - "pressure": 1025, - "humidity": 92, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 8.69, + "feels_like": 8.69, + "pressure": 1010, + "humidity": 84, + "temp_min": 7.18, + "temp_max": 9.99 }, "wind": { - "speed": 0.89, - "deg": 180, - "gust": 2.68 + "speed": 0.48, + "deg": 353, + "gust": 1.09 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.87 - } + ] }, { - "dt": 1742187600, + "dt": 1744873200, "main": { - "temp": 0.02, - "feels_like": 0.02, - "pressure": 1025, - "humidity": 93, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 9.97, + "feels_like": 9.97, + "pressure": 1009, + "humidity": 82, + "temp_min": 9.95, + "temp_max": 11.03 }, "wind": { - "speed": 0.45, - "deg": 236, - "gust": 2.68 + "speed": 0.87, + "deg": 352, + "gust": 0.84 }, "clouds": { "all": 100 }, "weather": [ { - "id": 600, - "main": "Snow", - "description": "light snow", - "icon": "13n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.49 - } + ] }, { - "dt": 1742191200, + "dt": 1744876800, "main": { - "temp": 0.02, - "feels_like": 0.02, - "pressure": 1024, - "humidity": 94, - "temp_min": -0.6, - "temp_max": 1.03 + "temp": 9.99, + "feels_like": 9.99, + "pressure": 1010, + "humidity": 83, + "temp_min": 9.99, + "temp_max": 10.51 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.68 + "speed": 0.45, + "deg": 45, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 1.33 - } + ] }, { - "dt": 1742194800, + "dt": 1744880400, "main": { - "temp": 0.57, - "feels_like": -0.84, - "pressure": 1023, - "humidity": 94, - "temp_min": -0.05, - "temp_max": 1.11 + "temp": 15.03, + "feels_like": 14.81, + "pressure": 1010, + "humidity": 85, + "temp_min": 15.03, + "temp_max": 15.03 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 + "speed": 1.18, + "deg": 318, + "gust": 1.53 }, "clouds": { "all": 100 }, "weather": [ { - "id": 601, - "main": "Snow", - "description": "snow", - "icon": "13d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "snow": { - "1h": 0.56 - } + ] }, { - "dt": 1742198400, + "dt": 1744884000, "main": { - "temp": 0.83, - "feels_like": -2.61, - "pressure": 1022, - "humidity": 94, - "temp_min": 0.51, - "temp_max": 1.11 + "temp": 17.03, + "feels_like": 17.03, + "pressure": 1010, + "humidity": 86, + "temp_min": 17.03, + "temp_max": 17.03 }, "wind": { - "speed": 3.13, - "deg": 225, - "gust": 6.26 + "speed": 1.71, + "deg": 322, + "gust": 2.06 }, "clouds": { "all": 100 @@ -11180,19 +11129,19 @@ ] }, { - "dt": 1742202000, + "dt": 1744887600, "main": { - "temp": 1.43, - "feels_like": -0.53, - "pressure": 1021, - "humidity": 92, - "temp_min": 0.51, - "temp_max": 2.22 + "temp": 17.03, + "feels_like": 17.09, + "pressure": 1010, + "humidity": 88, + "temp_min": 17.03, + "temp_max": 17.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 4.02 + "speed": 3.08, + "deg": 329, + "gust": 3.17 }, "clouds": { "all": 100 @@ -11207,49 +11156,46 @@ ] }, { - "dt": 1742205600, + "dt": 1744891200, "main": { - "temp": 1.98, - "feels_like": 0.11, - "pressure": 1021, - "humidity": 92, - "temp_min": 1.07, - "temp_max": 2.77 + "temp": 17.03, + "feels_like": 17.09, + "pressure": 1010, + "humidity": 88, + "temp_min": 17.03, + "temp_max": 17.03 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 3.58 + "speed": 3.16, + "deg": 336, + "gust": 3.37 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.36 - } + ] }, { - "dt": 1742209200, + "dt": 1744894800, "main": { - "temp": 3.05, - "feels_like": 0.84, - "pressure": 1021, - "humidity": 93, - "temp_min": 2.73, - "temp_max": 3.33 + "temp": 17.03, + "feels_like": 17.11, + "pressure": 1009, + "humidity": 89, + "temp_min": 17.03, + "temp_max": 17.03 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 5.36 + "speed": 2.23, + "deg": 296, + "gust": 2.07 }, "clouds": { "all": 100 @@ -11263,23 +11209,23 @@ } ], "rain": { - "1h": 0.79 + "1h": 0.6 } }, { - "dt": 1742212800, + "dt": 1744898400, "main": { - "temp": 3.6, - "feels_like": 1.49, - "pressure": 1021, - "humidity": 91, - "temp_min": 3.03, - "temp_max": 3.88 + "temp": 12.73, + "feels_like": 11.89, + "pressure": 1008, + "humidity": 70, + "temp_min": 12.73, + "temp_max": 17.03 }, "wind": { - "speed": 2.24, - "deg": 248, - "gust": 4.02 + "speed": 0.45, + "deg": 23, + "gust": 1.34 }, "clouds": { "all": 100 @@ -11293,113 +11239,77 @@ } ], "rain": { - "1h": 1.38 + "1h": 1.15 } }, { - "dt": 1742216400, + "dt": 1744902000, "main": { - "temp": 4.16, - "feels_like": 1.75, - "pressure": 1021, - "humidity": 92, - "temp_min": 3.84, - "temp_max": 4.44 - }, - "wind": { - "speed": 2.68, - "deg": 270, - "gust": 8.05 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.16 - } - }, - { - "dt": 1742220000, - "main": { - "temp": 4.11, - "feels_like": 0.75, - "pressure": 1021, - "humidity": 89, - "temp_min": 3.88, - "temp_max": 5.03 + "temp": 12.22, + "feels_like": 11.51, + "pressure": 1008, + "humidity": 77, + "temp_min": 12.18, + "temp_max": 12.22 }, "wind": { - "speed": 4.02, - "deg": 293, - "gust": 8.05 + "speed": 0.98, + "deg": 292, + "gust": 0.84 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.14 - } + ] }, { - "dt": 1742223600, + "dt": 1744905600, "main": { - "temp": 3.86, - "feels_like": 2.28, - "pressure": 1021, - "humidity": 89, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 11.69, + "feels_like": 10.95, + "pressure": 1007, + "humidity": 78, + "temp_min": 10.03, + "temp_max": 12.22 }, "wind": { - "speed": 1.79, - "deg": 203, - "gust": 5.36 + "speed": 1.34, + "deg": 158, + "gust": 3.13 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.3 - } + ] }, { - "dt": 1742227200, + "dt": 1744909200, "main": { - "temp": 3.31, - "feels_like": 2.26, - "pressure": 1022, - "humidity": 91, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 10.27, + "feels_like": 9.52, + "pressure": 1007, + "humidity": 83, + "temp_min": 9.95, + "temp_max": 10.55 }, "wind": { "speed": 1.34, - "deg": 130, - "gust": 5.36 + "deg": 158, + "gust": 3.58 }, "clouds": { "all": 100 @@ -11414,49 +11324,49 @@ ] }, { - "dt": 1742230800, + "dt": 1744912800, "main": { - "temp": 3.31, - "feels_like": 2.26, - "pressure": 1022, - "humidity": 92, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 9.11, + "feels_like": 6.53, + "pressure": 1007, + "humidity": 90, + "temp_min": 8.88, + "temp_max": 10.03 }, "wind": { - "speed": 1.34, - "deg": 80, - "gust": 4.02 + "speed": 4.87, + "deg": 255, + "gust": 6.16 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, + "id": 500, "main": "Rain", - "description": "moderate rain", + "description": "light rain", "icon": "10d" } ], "rain": { - "1h": 1.2 + "1h": 0.25 } }, { - "dt": 1742234400, + "dt": 1744916400, "main": { - "temp": 3.31, - "feels_like": 1.64, - "pressure": 1022, - "humidity": 93, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 8.6, + "feels_like": 8.6, + "pressure": 1007, + "humidity": 92, + "temp_min": 8.29, + "temp_max": 9.03 }, "wind": { - "speed": 1.79, - "deg": 248, - "gust": 5.36 + "speed": 0.89, + "deg": 158, + "gust": 1.79 }, "clouds": { "all": 100 @@ -11470,224 +11380,227 @@ } ], "rain": { - "1h": 1.95 + "1h": 2.73 } }, { - "dt": 1742238000, + "dt": 1744920000, "main": { - "temp": 3.05, - "feels_like": 1.34, - "pressure": 1022, - "humidity": 93, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 8.05, + "feels_like": 8.05, + "pressure": 1008, + "humidity": 94, + "temp_min": 7.73, + "temp_max": 9.03 }, "wind": { - "speed": 1.79, - "deg": 72, - "gust": 5.36 + "speed": 0.89, + "deg": 158, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 501, "main": "Rain", - "description": "light rain", + "description": "moderate rain", "icon": "10n" } ], "rain": { - "1h": 0.87 + "1h": 1.02 } }, { - "dt": 1742241600, + "dt": 1744923600, "main": { - "temp": 3.6, - "feels_like": 3.6, - "pressure": 1022, - "humidity": 93, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 7.75, + "feels_like": 7.75, + "pressure": 1008, + "humidity": 94, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 126, - "gust": 3.13 + "speed": 0.45, + "deg": 135, + "gust": 0.89 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10n" } ], "rain": { - "1h": 0.31 + "1h": 4.86 } }, { - "dt": 1742245200, + "dt": 1744927200, "main": { - "temp": 3.6, - "feels_like": 1.98, - "pressure": 1023, - "humidity": 92, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 7.75, + "feels_like": 7.75, + "pressure": 1009, + "humidity": 95, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 4.92 + "speed": 0.97, + "deg": 206, + "gust": 1.63 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 4.13 + } }, { - "dt": 1742248800, + "dt": 1744930800, "main": { - "temp": 3.86, - "feels_like": 2.88, - "pressure": 1023, - "humidity": 90, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 7.75, + "feels_like": 6.7, + "pressure": 1009, + "humidity": 95, + "temp_min": 7.73, + "temp_max": 9.03 }, "wind": { - "speed": 1.34, - "deg": 180, - "gust": 3.13 + "speed": 1.86, + "deg": 190, + "gust": 2.7 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 1.78 + } }, { - "dt": 1742252400, + "dt": 1744934400, "main": { - "temp": 4.16, - "feels_like": 3.22, - "pressure": 1023, - "humidity": 90, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 7.75, + "feels_like": 7.28, + "pressure": 1009, + "humidity": 95, + "temp_min": 7.73, + "temp_max": 9.03 }, "wind": { "speed": 1.34, - "deg": 225, - "gust": 2.68 + "deg": 68, + "gust": 4.02 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 1.54 + } }, { - "dt": 1742256000, + "dt": 1744938000, "main": { - "temp": 4.11, - "feels_like": 3.16, - "pressure": 1022, - "humidity": 91, - "temp_min": 3.88, - "temp_max": 5.03 + "temp": 7.45, + "feels_like": 6.31, + "pressure": 1010, + "humidity": 94, + "temp_min": 7.22, + "temp_max": 8.03 }, "wind": { - "speed": 1.34, - "deg": 15, - "gust": 2.68 + "speed": 1.91, + "deg": 111, + "gust": 2.38 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.36 - } + ] }, { - "dt": 1742259600, + "dt": 1744941600, "main": { - "temp": 4.16, - "feels_like": 3.22, - "pressure": 1022, - "humidity": 91, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 6.94, + "feels_like": 5.67, + "pressure": 1010, + "humidity": 95, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 1.34, - "deg": 60, - "gust": 3.58 + "speed": 1.96, + "deg": 103, + "gust": 2.39 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.16 - } + ] }, { - "dt": 1742263200, + "dt": 1744945200, "main": { - "temp": 3.6, - "feels_like": 1.98, - "pressure": 1022, - "humidity": 92, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 6.64, + "feels_like": 6.64, + "pressure": 1010, + "humidity": 96, + "temp_min": 6.62, + "temp_max": 7.03 }, "wind": { - "speed": 1.79, - "deg": 5, - "gust": 4.02 + "speed": 1.09, + "deg": 103, + "gust": 1.25 }, "clouds": { "all": 100 @@ -11701,53 +11614,50 @@ } ], "rain": { - "1h": 0.95 + "1h": 0.22 } }, { - "dt": 1742266800, + "dt": 1744948800, "main": { - "temp": 4.16, - "feels_like": 3.22, - "pressure": 1021, - "humidity": 92, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 6.69, + "feels_like": 6.69, + "pressure": 1010, + "humidity": 95, + "temp_min": 6.03, + "temp_max": 7.22 }, "wind": { - "speed": 1.34, - "deg": 264, - "gust": 4.47 + "speed": 0.85, + "deg": 117, + "gust": 1 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.15 - } + ] }, { - "dt": 1742270400, + "dt": 1744952400, "main": { - "temp": 4.42, - "feels_like": 2.92, - "pressure": 1021, - "humidity": 90, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 6.94, + "feels_like": 6.94, + "pressure": 1010, + "humidity": 96, + "temp_min": 5.03, + "temp_max": 7.22 }, "wind": { - "speed": 1.79, - "deg": 158, - "gust": 4.02 + "speed": 0.67, + "deg": 104, + "gust": 0.67 }, "clouds": { "all": 100 @@ -11757,24 +11667,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742274000, + "dt": 1744956000, "main": { - "temp": 4.42, - "feels_like": 3.51, - "pressure": 1021, - "humidity": 90, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 7.49, + "feels_like": 7.49, + "pressure": 1011, + "humidity": 96, + "temp_min": 6.03, + "temp_max": 7.77 }, "wind": { - "speed": 1.34, - "deg": 21, - "gust": 8.05 + "speed": 0.41, + "deg": 47, + "gust": 0.32 }, "clouds": { "all": 100 @@ -11784,177 +11694,162 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742277600, + "dt": 1744959600, "main": { - "temp": 4.16, - "feels_like": 3.22, - "pressure": 1021, - "humidity": 92, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 8.31, + "feels_like": 8.31, + "pressure": 1011, + "humidity": 95, + "temp_min": 8.03, + "temp_max": 8.33 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 + "speed": 0.45, + "deg": 135, + "gust": 1.79 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.27 - } + ] }, { - "dt": 1742281200, + "dt": 1744963200, "main": { - "temp": 4.71, - "feels_like": 2.79, - "pressure": 1021, - "humidity": 90, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 8.86, + "feels_like": 8.86, + "pressure": 1011, + "humidity": 92, + "temp_min": 8.84, + "temp_max": 9.03 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 7.15 + "speed": 0.89, + "deg": 203, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.15 - } + ] }, { - "dt": 1742284800, + "dt": 1744966800, "main": { - "temp": 4.97, - "feels_like": 3.1, - "pressure": 1020, - "humidity": 87, - "temp_min": 4.95, - "temp_max": 5.03 + "temp": 9.44, + "feels_like": 9.44, + "pressure": 1011, + "humidity": 91, + "temp_min": 9.44, + "temp_max": 11.03 }, "wind": { - "speed": 2.24, - "deg": 248, - "gust": 6.26 + "speed": 1.17, + "deg": 53, + "gust": 1.17 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.29 - } + ] }, { - "dt": 1742288400, + "dt": 1744970400, "main": { - "temp": 4.97, - "feels_like": 2.72, - "pressure": 1020, - "humidity": 88, - "temp_min": 4.95, - "temp_max": 5.03 + "temp": 11.11, + "feels_like": 10.5, + "pressure": 1012, + "humidity": 85, + "temp_min": 11.11, + "temp_max": 12.03 }, "wind": { - "speed": 2.68, - "deg": 248, - "gust": 7.15 + "speed": 1.59, + "deg": 76, + "gust": 1.5 }, "clouds": { - "all": 100 + "all": 92 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.37 - } + ] }, { - "dt": 1742292000, + "dt": 1744974000, "main": { - "temp": 4.97, - "feels_like": 3.56, - "pressure": 1020, - "humidity": 88, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 10.55, + "feels_like": 9.91, + "pressure": 1012, + "humidity": 86, + "temp_min": 10.55, + "temp_max": 13.03 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 4.92 + "speed": 1.26, + "deg": 44, + "gust": 1.15 }, "clouds": { - "all": 100 + "all": 86 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.54 - } + ] }, { - "dt": 1742295600, + "dt": 1744977600, "main": { - "temp": 5.27, - "feels_like": 3.07, - "pressure": 1020, - "humidity": 88, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 10.83, + "feels_like": 10.06, + "pressure": 1012, + "humidity": 80, + "temp_min": 10.51, + "temp_max": 11.11 }, "wind": { "speed": 2.68, - "deg": 225, - "gust": 5.81 + "deg": 338, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 85 }, "weather": [ { @@ -11966,49 +11861,49 @@ ] }, { - "dt": 1742299200, + "dt": 1744981200, "main": { - "temp": 6.38, - "feels_like": 3.54, - "pressure": 1019, - "humidity": 81, - "temp_min": 5.03, - "temp_max": 6.66 + "temp": 9.71, + "feels_like": 9.04, + "pressure": 1013, + "humidity": 79, + "temp_min": 9.4, + "temp_max": 10.03 }, "wind": { - "speed": 4.02, - "deg": 248, - "gust": 10.28 + "speed": 1.79, + "deg": 338, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 83 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742302800, + "dt": 1744984800, "main": { - "temp": 6.09, - "feels_like": 3.19, - "pressure": 1019, - "humidity": 83, - "temp_min": 6.07, - "temp_max": 7.03 + "temp": 10.02, + "feels_like": 8.96, + "pressure": 1013, + "humidity": 72, + "temp_min": 9.4, + "temp_max": 10.55 }, "wind": { - "speed": 4.02, - "deg": 248, - "gust": 8.49 + "speed": 3.13, + "deg": 338, + "gust": 6.71 }, "clouds": { - "all": 100 + "all": 87 }, "weather": [ { @@ -12020,52 +11915,49 @@ ] }, { - "dt": 1742306400, + "dt": 1744988400, "main": { - "temp": 6.09, - "feels_like": 3.44, - "pressure": 1019, - "humidity": 84, - "temp_min": 6.03, - "temp_max": 6.11 + "temp": 10.51, + "feels_like": 9.39, + "pressure": 1013, + "humidity": 68, + "temp_min": 10.03, + "temp_max": 10.51 }, "wind": { - "speed": 3.58, - "deg": 225, - "gust": 8.94 + "speed": 1.79, + "deg": 315, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 92 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.52 - } + ] }, { - "dt": 1742310000, + "dt": 1744992000, "main": { - "temp": 6.34, - "feels_like": 3.49, - "pressure": 1018, - "humidity": 80, - "temp_min": 6.03, - "temp_max": 6.62 + "temp": 8.84, + "feels_like": 8.51, + "pressure": 1014, + "humidity": 72, + "temp_min": 8.84, + "temp_max": 10.03 }, "wind": { - "speed": 4.02, - "deg": 248, - "gust": 11.62 + "speed": 1.34, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { @@ -12077,79 +11969,73 @@ ] }, { - "dt": 1742313600, + "dt": 1744995600, "main": { - "temp": 5.22, - "feels_like": 2.68, - "pressure": 1018, - "humidity": 86, - "temp_min": 4.99, - "temp_max": 6.03 + "temp": 8.56, + "feels_like": 7.71, + "pressure": 1014, + "humidity": 75, + "temp_min": 8.33, + "temp_max": 10.03 }, "wind": { - "speed": 3.13, - "deg": 248, - "gust": 8.94 + "speed": 1.79, + "deg": 293, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 96 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.41 - } + ] }, { - "dt": 1742317200, + "dt": 1744999200, "main": { - "temp": 4.97, - "feels_like": 1.81, - "pressure": 1017, - "humidity": 88, - "temp_min": 4.95, - "temp_max": 5.03 + "temp": 7.96, + "feels_like": 7.96, + "pressure": 1014, + "humidity": 74, + "temp_min": 7.22, + "temp_max": 9.03 }, "wind": { - "speed": 4.02, - "deg": 270, - "gust": 8.49 + "speed": 0.89, + "deg": 293, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.04 - } + ] }, { - "dt": 1742320800, + "dt": 1745002800, "main": { - "temp": 4.71, - "feels_like": 2.79, - "pressure": 1017, - "humidity": 89, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 6.85, + "feels_like": 6.85, + "pressure": 1015, + "humidity": 76, + "temp_min": 6.11, + "temp_max": 9.03 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 6.71 + "speed": 0.45, + "deg": 338, + "gust": 1.34 }, "clouds": { "all": 100 @@ -12164,49 +12050,46 @@ ] }, { - "dt": 1742324400, + "dt": 1745006400, "main": { - "temp": 5.27, - "feels_like": 3.45, - "pressure": 1017, - "humidity": 86, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 6.6, + "feels_like": 5.25, + "pressure": 1015, + "humidity": 77, + "temp_min": 6.11, + "temp_max": 8.03 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 6.71 + "speed": 1.98, + "deg": 300, + "gust": 4.06 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.05 - } + ] }, { - "dt": 1742328000, + "dt": 1745010000, "main": { - "temp": 4.97, - "feels_like": 2.38, - "pressure": 1017, - "humidity": 87, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 6.6, + "feels_like": 5.69, + "pressure": 1015, + "humidity": 78, + "temp_min": 6.11, + "temp_max": 8.03 }, "wind": { - "speed": 3.13, - "deg": 248, - "gust": 7.6 + "speed": 1.57, + "deg": 294, + "gust": 3.34 }, "clouds": { "all": 100 @@ -12221,670 +12104,622 @@ ] }, { - "dt": 1742331600, + "dt": 1745013600, "main": { - "temp": 5.27, - "feels_like": 3.45, - "pressure": 1017, - "humidity": 85, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 6.04, + "feels_like": 6.04, + "pressure": 1016, + "humidity": 76, + "temp_min": 5.55, + "temp_max": 8.03 }, "wind": { - "speed": 2.24, - "deg": 248, - "gust": 4.92 + "speed": 0.88, + "deg": 234, + "gust": 2.05 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.9 - } + ] }, { - "dt": 1742335200, + "dt": 1745017200, "main": { - "temp": 5.53, - "feels_like": 2.76, - "pressure": 1017, - "humidity": 84, - "temp_min": 5.51, - "temp_max": 6.03 + "temp": 6.09, + "feels_like": 6.09, + "pressure": 1016, + "humidity": 75, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 3.58, - "deg": 248, - "gust": 8.05 + "speed": 0.45, + "deg": 180, + "gust": 0.89 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.5 - } + ] }, { - "dt": 1742338800, + "dt": 1745020800, "main": { - "temp": 5.83, - "feels_like": 4.11, - "pressure": 1017, - "humidity": 83, - "temp_min": 5.51, - "temp_max": 6.11 + "temp": 5.78, + "feels_like": 5.78, + "pressure": 1016, + "humidity": 78, + "temp_min": 5.55, + "temp_max": 6.07 }, "wind": { - "speed": 2.24, - "deg": 270, - "gust": 6.26 + "speed": 0.71, + "deg": 218, + "gust": 1.54 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.86 - } + ] }, { - "dt": 1742342400, + "dt": 1745024400, "main": { - "temp": 4.97, - "feels_like": 2.72, + "temp": 5.53, + "feels_like": 5.53, "pressure": 1016, - "humidity": 90, - "temp_min": 4.95, - "temp_max": 5.03 + "humidity": 79, + "temp_min": 5.51, + "temp_max": 6.03 }, "wind": { - "speed": 2.68, - "deg": 270, - "gust": 7.15 + "speed": 1.02, + "deg": 207, + "gust": 0.96 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.46 - } + ] }, { - "dt": 1742346000, + "dt": 1745028000, "main": { "temp": 4.97, - "feels_like": 3.1, - "pressure": 1017, - "humidity": 90, + "feels_like": 3.11, + "pressure": 1016, + "humidity": 83, "temp_min": 4.95, "temp_max": 5.03 }, "wind": { - "speed": 2.24, - "deg": 270, - "gust": 5.36 + "speed": 2.23, + "deg": 213, + "gust": 2.56 }, "clouds": { - "all": 100 + "all": 88 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.73 - } + ] }, { - "dt": 1742349600, + "dt": 1745031600, "main": { - "temp": 4.97, - "feels_like": 2.72, - "pressure": 1017, - "humidity": 90, - "temp_min": 4.95, + "temp": 3.82, + "feels_like": 1.53, + "pressure": 1016, + "humidity": 85, + "temp_min": 3.33, "temp_max": 5.03 }, "wind": { - "speed": 2.68, - "deg": 270, - "gust": 6.26 + "speed": 2.47, + "deg": 216, + "gust": 2.83 }, "clouds": { - "all": 100 + "all": 74 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } - ], - "rain": { - "1h": 2.73 - } + ] }, { - "dt": 1742353200, + "dt": 1745035200, "main": { - "temp": 4.97, - "feels_like": 3.1, - "pressure": 1017, - "humidity": 90, - "temp_min": 4.95, - "temp_max": 5.03 + "temp": 3.86, + "feels_like": 1.42, + "pressure": 1016, + "humidity": 86, + "temp_min": 3.84, + "temp_max": 4.03 }, "wind": { - "speed": 2.24, - "deg": 248, - "gust": 4.47 + "speed": 2.65, + "deg": 234, + "gust": 2.84 }, "clouds": { - "all": 100 + "all": 62 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.37 - } + ] }, { - "dt": 1742356800, + "dt": 1745038800, "main": { - "temp": 4.97, - "feels_like": 2.08, + "temp": 4.71, + "feels_like": 4.71, "pressure": 1017, - "humidity": 88, - "temp_min": 4.95, - "temp_max": 5.03 + "humidity": 84, + "temp_min": 4.03, + "temp_max": 4.99 }, "wind": { - "speed": 3.58, - "deg": 270, - "gust": 7.6 + "speed": 0.45, + "deg": 158, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 58 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.11 - } + ] }, { - "dt": 1742360400, + "dt": 1745042400, "main": { - "temp": 4.97, - "feels_like": 2.38, - "pressure": 1018, - "humidity": 87, + "temp": 5.53, + "feels_like": 5.53, + "pressure": 1017, + "humidity": 80, "temp_min": 4.03, - "temp_max": 4.99 + "temp_max": 5.55 }, "wind": { - "speed": 3.13, - "deg": 270, - "gust": 5.81 + "speed": 0.45, + "deg": 203, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 58 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.13 - } + ] }, { - "dt": 1742364000, + "dt": 1745046000, "main": { - "temp": 4.67, - "feels_like": 2.01, + "temp": 7.2, + "feels_like": 7.2, "pressure": 1017, - "humidity": 88, - "temp_min": 4.03, - "temp_max": 4.95 + "humidity": 75, + "temp_min": 5.03, + "temp_max": 7.22 }, "wind": { - "speed": 3.13, - "deg": 270, - "gust": 6.71 + "speed": 0.89, + "deg": 135, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 36 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } - ], - "rain": { - "1h": 1.95 - } + ] }, { - "dt": 1742367600, + "dt": 1745049600, "main": { - "temp": 4.42, - "feels_like": 4.42, + "temp": 7.75, + "feels_like": 7.75, "pressure": 1018, - "humidity": 91, - "temp_min": 4.03, - "temp_max": 4.44 + "humidity": 69, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 122, - "gust": 3.13 + "speed": 0.45, + "deg": 225, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 73 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.05 - } + ] }, { - "dt": 1742371200, + "dt": 1745053200, "main": { - "temp": 4.42, - "feels_like": 2.92, + "temp": 8.31, + "feels_like": 7.2, "pressure": 1018, - "humidity": 92, - "temp_min": 4.4, - "temp_max": 5.03 + "humidity": 69, + "temp_min": 8.03, + "temp_max": 8.33 }, "wind": { - "speed": 1.79, - "deg": 248, - "gust": 6.71 + "speed": 2.03, + "deg": 296, + "gust": 3.01 }, "clouds": { - "all": 100 + "all": 77 }, "weather": [ { - "id": 502, - "main": "Rain", - "description": "heavy intensity rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 4.21 - } + ] }, { - "dt": 1742374800, + "dt": 1745056800, "main": { - "temp": 4.97, - "feels_like": 4.13, + "temp": 8.31, + "feels_like": 8.31, "pressure": 1018, - "humidity": 89, - "temp_min": 4.03, - "temp_max": 4.99 + "humidity": 72, + "temp_min": 8.03, + "temp_max": 8.33 }, "wind": { - "speed": 1.34, - "deg": 225, - "gust": 3.13 + "speed": 0.45, + "deg": 315, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 81 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.32 - } + ] }, { - "dt": 1742378400, + "dt": 1745060400, "main": { - "temp": 4.67, - "feels_like": 4.67, - "pressure": 1019, - "humidity": 91, - "temp_min": 4.03, - "temp_max": 4.95 + "temp": 10.22, + "feels_like": 9.07, + "pressure": 1018, + "humidity": 68, + "temp_min": 8.03, + "temp_max": 10.51 }, "wind": { - "speed": 0.89, - "deg": 225, - "gust": 4.02 + "speed": 0.45, + "deg": 203, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 81 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.33 - } + ] }, { - "dt": 1742382000, + "dt": 1745064000, "main": { - "temp": 4.71, - "feels_like": 2.79, + "temp": 10.51, + "feels_like": 9.31, "pressure": 1019, - "humidity": 91, - "temp_min": 4.03, - "temp_max": 4.99 + "humidity": 65, + "temp_min": 10.03, + "temp_max": 10.51 }, "wind": { - "speed": 2.24, - "deg": 203, - "gust": 4.92 + "speed": 1.34, + "deg": 338, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 83 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.15 - } + ] }, { - "dt": 1742385600, + "dt": 1745067600, "main": { - "temp": 4.71, - "feels_like": 3.84, + "temp": 10.53, + "feels_like": 9.36, "pressure": 1019, - "humidity": 92, - "temp_min": 4.03, - "temp_max": 4.99 + "humidity": 66, + "temp_min": 10.51, + "temp_max": 11.03 }, "wind": { "speed": 1.34, - "deg": 155, - "gust": 3.58 + "deg": 0, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 49 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } - ], - "rain": { - "1h": 1.33 - } + ] }, { - "dt": 1742389200, + "dt": 1745071200, "main": { - "temp": 4.71, - "feels_like": 4.71, - "pressure": 1019, - "humidity": 92, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 10.51, + "feels_like": 9.34, + "pressure": 1018, + "humidity": 66, + "temp_min": 10.03, + "temp_max": 10.51 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.68 + "speed": 1.34, + "deg": 338, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 56 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.82 - } + ] }, { - "dt": 1742392800, + "dt": 1745074800, "main": { - "temp": 4.16, - "feels_like": 2.62, - "pressure": 1019, - "humidity": 92, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 10.51, + "feels_like": 9.42, + "pressure": 1018, + "humidity": 69, + "temp_min": 10.03, + "temp_max": 10.51 }, "wind": { "speed": 1.79, - "deg": 225, + "deg": 338, "gust": 4.92 }, "clouds": { - "all": 100 + "all": 70 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.61 - } + ] }, { - "dt": 1742396400, + "dt": 1745078400, "main": { - "temp": 4.16, - "feels_like": 2.62, + "temp": 9.93, + "feels_like": 9.29, "pressure": 1019, - "humidity": 90, - "temp_min": 3.84, - "temp_max": 5.03 + "humidity": 71, + "temp_min": 9.44, + "temp_max": 10.51 }, "wind": { "speed": 1.79, - "deg": 225, - "gust": 4.47 + "deg": 338, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 75 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742400000, + "dt": 1745082000, "main": { - "temp": 4.42, - "feels_like": 2.06, + "temp": 7.75, + "feels_like": 6.36, "pressure": 1018, - "humidity": 88, - "temp_min": 4.4, - "temp_max": 5.03 + "humidity": 82, + "temp_min": 7.73, + "temp_max": 9.03 }, "wind": { - "speed": 2.68, - "deg": 225, - "gust": 6.26 + "speed": 2.24, + "deg": 45, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 81 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742403600, + "dt": 1745085600, "main": { - "temp": 3.86, - "feels_like": 2.88, + "temp": 6.94, + "feels_like": 5.06, "pressure": 1018, - "humidity": 88, - "temp_min": 3.84, - "temp_max": 5.03 + "humidity": 85, + "temp_min": 6.62, + "temp_max": 9.03 }, "wind": { - "speed": 1.34, - "deg": 248, - "gust": 3.58 + "speed": 2.68, + "deg": 45, + "gust": 4.92 }, "clouds": { - "all": 100 + "all": 86 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.35 + } }, { - "dt": 1742407200, + "dt": 1745089200, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1018, + "temp": 6.09, + "feels_like": 4.85, + "pressure": 1019, "humidity": 86, - "temp_min": 3.84, - "temp_max": 5.03 + "temp_min": 6.07, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 153, - "gust": 3.58 + "speed": 1.79, + "deg": 23, + "gust": 4.02 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 2.05 + } }, { - "dt": 1742410800, + "dt": 1745092800, "main": { - "temp": 3.56, - "feels_like": 3.56, - "pressure": 1018, - "humidity": 86, - "temp_min": 3.33, - "temp_max": 4.03 + "temp": 6.09, + "feels_like": 4.85, + "pressure": 1019, + "humidity": 80, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 0.89, - "deg": 225, - "gust": 2.24 + "speed": 1.79, + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { @@ -12896,22 +12731,22 @@ ] }, { - "dt": 1742414400, + "dt": 1745096400, "main": { - "temp": 3.31, - "feels_like": 3.31, - "pressure": 1018, - "humidity": 88, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 5.53, + "feels_like": 3.76, + "pressure": 1019, + "humidity": 78, + "temp_min": 5.51, + "temp_max": 6.03 }, "wind": { - "speed": 0.45, - "deg": 0, - "gust": 2.24 + "speed": 2.24, + "deg": 45, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 91 }, "weather": [ { @@ -12923,22 +12758,22 @@ ] }, { - "dt": 1742418000, + "dt": 1745100000, "main": { - "temp": 3.6, - "feels_like": 2.58, - "pressure": 1018, - "humidity": 87, - "temp_min": 3.29, - "temp_max": 4.03 + "temp": 4.71, + "feels_like": 2.06, + "pressure": 1019, + "humidity": 79, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { - "speed": 1.34, - "deg": 113, - "gust": 3.13 + "speed": 3.13, + "deg": 45, + "gust": 6.26 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { @@ -12950,772 +12785,751 @@ ] }, { - "dt": 1742421600, + "dt": 1745103600, "main": { - "temp": 3.31, - "feels_like": 3.31, - "pressure": 1018, - "humidity": 86, - "temp_min": 3.29, + "temp": 3.86, + "feels_like": 1.79, + "pressure": 1019, + "humidity": 81, + "temp_min": 3.84, "temp_max": 4.03 }, "wind": { - "speed": 0.45, - "deg": 180, - "gust": 1.34 + "speed": 2.24, + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 80 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1742425200, + "dt": 1745107200, "main": { - "temp": 2.45, - "feels_like": -1.06, + "temp": 3.31, + "feels_like": 1.64, "pressure": 1018, - "humidity": 86, - "temp_min": 2.22, - "temp_max": 4.03 + "humidity": 83, + "temp_min": 3.03, + "temp_max": 3.33 }, "wind": { - "speed": 3.67, - "deg": 236, - "gust": 6.3 + "speed": 1.79, + "deg": 45, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 74 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1742428800, + "dt": 1745110800, "main": { - "temp": 2.75, - "feels_like": -0.79, - "pressure": 1017, + "temp": 2.45, + "feels_like": 1.28, + "pressure": 1018, "humidity": 87, - "temp_min": 2.73, - "temp_max": 4.03 + "temp_min": 1.03, + "temp_max": 2.73 }, "wind": { - "speed": 3.82, - "deg": 239, - "gust": 6.63 + "speed": 1.34, + "deg": 23, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 49 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742432400, + "dt": 1745114400, "main": { "temp": 2.75, - "feels_like": 2.75, + "feels_like": 0.49, "pressure": 1017, - "humidity": 88, - "temp_min": 2.73, - "temp_max": 3.03 + "humidity": 85, + "temp_min": 1.03, + "temp_max": 2.77 }, "wind": { - "speed": 0.89, - "deg": 182, - "gust": 2.24 + "speed": 2.24, + "deg": 23, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 33 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742436000, + "dt": 1745118000, "main": { - "temp": 2.2, - "feels_like": 2.2, + "temp": 2.49, + "feels_like": 2.49, "pressure": 1017, - "humidity": 89, - "temp_min": 2.18, - "temp_max": 4.03 + "humidity": 86, + "temp_min": 1.03, + "temp_max": 2.77 }, "wind": { - "speed": 0.45, - "deg": 135, - "gust": 1.34 + "speed": 0.89, + "deg": 0, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 25 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742439600, + "dt": 1745121600, "main": { - "temp": 2.2, - "feels_like": -0.65, + "temp": 1.94, + "feels_like": 1.94, "pressure": 1016, - "humidity": 88, - "temp_min": 2.18, - "temp_max": 4.03 + "humidity": 86, + "temp_min": 0.03, + "temp_max": 2.22 }, "wind": { - "speed": 2.75, - "deg": 207, - "gust": 3.32 + "speed": 0.89, + "deg": 0, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 24 }, "weather": [ { - "id": 804, + "id": 801, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "few clouds", + "icon": "02d" } ] }, { - "dt": 1742443200, + "dt": 1745125200, "main": { - "temp": 2.2, - "feels_like": 2.2, + "temp": 2.49, + "feels_like": 2.49, "pressure": 1016, - "humidity": 88, - "temp_min": 2.18, - "temp_max": 3.03 + "humidity": 87, + "temp_min": 0.03, + "temp_max": 2.77 }, "wind": { "speed": 0.45, - "deg": 158, - "gust": 1.79 + "deg": 338, + "gust": 1.34 }, "clouds": { - "all": 99 + "all": 23 }, "weather": [ { - "id": 804, + "id": 801, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "few clouds", + "icon": "02d" } ] }, { - "dt": 1742446800, + "dt": 1745128800, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1015, + "temp": 3.05, + "feels_like": 3.05, + "pressure": 1016, "humidity": 85, - "temp_min": 2.18, - "temp_max": 3.03 + "temp_min": 2.03, + "temp_max": 3.33 }, "wind": { "speed": 0.45, - "deg": 158, - "gust": 1.79 + "deg": 0, + "gust": 2.68 }, "clouds": { - "all": 91 + "all": 21 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02d" } - ], - "rain": { - "1h": 0.4 - } + ] }, { - "dt": 1742450400, + "dt": 1745132400, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1015, - "humidity": 84, - "temp_min": 2.03, - "temp_max": 2.22 + "temp": 3.86, + "feels_like": 2.28, + "pressure": 1016, + "humidity": 81, + "temp_min": 3.84, + "temp_max": 4.03 }, "wind": { - "speed": 0.45, - "deg": 180, - "gust": 1.34 + "speed": 1.79, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 99 + "all": 4 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 800, + "main": "Clear", + "description": "clear sky", + "icon": "01d" } - ], - "rain": { - "1h": 0.37 - } + ] }, { - "dt": 1742454000, + "dt": 1745136000, "main": { - "temp": 1.89, - "feels_like": -1.02, - "pressure": 1016, - "humidity": 89, - "temp_min": 1.66, - "temp_max": 3.03 + "temp": 6.09, + "feels_like": 5.4, + "pressure": 1015, + "humidity": 74, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 2.75, - "deg": 199, - "gust": 3.31 + "speed": 1.34, + "deg": 338, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 46 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } - ], - "rain": { - "1h": 0.87 - } + ] }, { - "dt": 1742457600, + "dt": 1745139600, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1017, - "humidity": 89, - "temp_min": 2.03, - "temp_max": 2.22 + "temp": 6.64, + "feels_like": 5.49, + "pressure": 1015, + "humidity": 71, + "temp_min": 6.03, + "temp_max": 6.66 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.34 + "speed": 1.79, + "deg": 23, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 63 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.17 - } + ] }, { - "dt": 1742461200, + "dt": 1745143200, "main": { - "temp": 3.31, - "feels_like": 2.26, - "pressure": 1017, - "humidity": 86, - "temp_min": 3.03, - "temp_max": 3.33 + "temp": 7.75, + "feels_like": 6.36, + "pressure": 1015, + "humidity": 69, + "temp_min": 7.03, + "temp_max": 7.77 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 4.02 + "speed": 2.24, + "deg": 338, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 73 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742464800, + "dt": 1745146800, "main": { - "temp": 4.16, - "feels_like": 3.22, - "pressure": 1017, - "humidity": 83, - "temp_min": 3.84, - "temp_max": 4.44 + "temp": 9.11, + "feels_like": 9.11, + "pressure": 1014, + "humidity": 67, + "temp_min": 8.88, + "temp_max": 9.4 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 + "speed": 0.89, + "deg": 338, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 72 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742468400, + "dt": 1745150400, "main": { - "temp": 4.97, - "feels_like": 4.13, - "pressure": 1017, - "humidity": 80, - "temp_min": 4.95, - "temp_max": 5.03 + "temp": 9.97, + "feels_like": 8.97, + "pressure": 1013, + "humidity": 65, + "temp_min": 9.95, + "temp_max": 10.03 }, "wind": { - "speed": 1.34, - "deg": 188, - "gust": 2.68 + "speed": 2.24, + "deg": 45, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 65 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742472000, + "dt": 1745154000, "main": { - "temp": 5.53, - "feels_like": 5.53, - "pressure": 1018, - "humidity": 80, - "temp_min": 5.03, - "temp_max": 5.55 + "temp": 9.44, + "feels_like": 8.04, + "pressure": 1013, + "humidity": 65, + "temp_min": 9.44, + "temp_max": 9.95 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 2.24 + "speed": 2.68, + "deg": 23, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 32 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1742475600, + "dt": 1745157600, "main": { - "temp": 5.83, - "feels_like": 5.11, - "pressure": 1018, - "humidity": 80, - "temp_min": 5.51, - "temp_max": 6.11 + "temp": 9.99, + "feels_like": 9.81, + "pressure": 1013, + "humidity": 66, + "temp_min": 9.99, + "temp_max": 10.51 }, "wind": { "speed": 1.34, - "deg": 225, - "gust": 3.58 + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 22 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02d" } - ], - "rain": { - "1h": 0.24 - } + ] }, { - "dt": 1742479200, + "dt": 1745161200, "main": { - "temp": 6.09, - "feels_like": 6.09, - "pressure": 1018, - "humidity": 79, - "temp_min": 6.07, - "temp_max": 7.03 + "temp": 10.55, + "feels_like": 9.33, + "pressure": 1012, + "humidity": 64, + "temp_min": 9.95, + "temp_max": 10.55 }, "wind": { - "speed": 0.89, - "deg": 248, - "gust": 2.68 + "speed": 2.68, + "deg": 23, + "gust": 5.36 }, "clouds": { - "all": 100 + "all": 19 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02d" } - ], - "rain": { - "1h": 0.23 - } + ] }, { - "dt": 1742482800, + "dt": 1745164800, "main": { - "temp": 6.09, - "feels_like": 6.09, - "pressure": 1019, - "humidity": 80, - "temp_min": 6.03, - "temp_max": 6.11 + "temp": 10.55, + "feels_like": 9.33, + "pressure": 1012, + "humidity": 64, + "temp_min": 10.51, + "temp_max": 10.55 }, "wind": { - "speed": 0.89, - "deg": 225, - "gust": 1.79 + "speed": 1.34, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 17 }, "weather": [ { - "id": 804, + "id": 801, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "few clouds", + "icon": "02d" } ] }, { - "dt": 1742486400, + "dt": 1745168400, "main": { - "temp": 4.71, - "feels_like": 4.71, - "pressure": 1020, - "humidity": 90, - "temp_min": 4.4, - "temp_max": 7.03 + "temp": 9.33, + "feels_like": 8.6, + "pressure": 1012, + "humidity": 65, + "temp_min": 8.33, + "temp_max": 13.03 }, "wind": { - "speed": 0.45, - "deg": 0, - "gust": 1.79 + "speed": 1.79, + "deg": 23, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 15 }, "weather": [ { - "id": 804, + "id": 801, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "few clouds", + "icon": "02d" } ] }, { - "dt": 1742490000, + "dt": 1745172000, "main": { - "temp": 4.11, - "feels_like": 4.11, - "pressure": 1020, - "humidity": 90, - "temp_min": 3.88, - "temp_max": 6.03 + "temp": 8.33, + "feels_like": 7.44, + "pressure": 1012, + "humidity": 70, + "temp_min": 8.33, + "temp_max": 9.4 }, "wind": { - "speed": 0.45, - "deg": 164, - "gust": 1.79 + "speed": 1.79, + "deg": 23, + "gust": 5.36 }, "clouds": { - "all": 99 + "all": 15 }, "weather": [ { - "id": 804, + "id": 801, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "few clouds", + "icon": "02d" } ] }, { - "dt": 1742493600, + "dt": 1745175600, "main": { - "temp": 3.86, - "feels_like": 0.81, - "pressure": 1021, - "humidity": 91, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 8, + "feels_like": 7.06, + "pressure": 1012, + "humidity": 66, + "temp_min": 7.77, + "temp_max": 10.03 }, "wind": { - "speed": 3.45, - "deg": 204, - "gust": 3.86 + "speed": 1.79, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 55 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1742497200, + "dt": 1745179200, "main": { - "temp": 3.56, - "feels_like": 0.2, - "pressure": 1021, - "humidity": 92, - "temp_min": 3.33, - "temp_max": 5.03 + "temp": 7.49, + "feels_like": 7.49, + "pressure": 1012, + "humidity": 68, + "temp_min": 7.18, + "temp_max": 9.03 }, "wind": { - "speed": 3.83, - "deg": 209, - "gust": 5.17 + "speed": 0.45, + "deg": 315, + "gust": 1.34 }, "clouds": { - "all": 96 + "all": 36 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 0.21 - } + ] }, { - "dt": 1742500800, + "dt": 1745182800, "main": { - "temp": 3.6, - "feels_like": 3.6, - "pressure": 1022, - "humidity": 91, - "temp_min": 3.29, - "temp_max": 5.03 + "temp": 6.09, + "feels_like": 3.72, + "pressure": 1012, + "humidity": 74, + "temp_min": 6.03, + "temp_max": 6.11 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.34 + "speed": 3.14, + "deg": 57, + "gust": 4.53 }, "clouds": { - "all": 99 + "all": 36 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742504400, + "dt": 1745186400, "main": { - "temp": 3, - "feels_like": 3, - "pressure": 1022, - "humidity": 90, - "temp_min": 2.77, - "temp_max": 4.03 + "temp": 4.71, + "feels_like": 4.71, + "pressure": 1012, + "humidity": 82, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { "speed": 0.45, - "deg": 158, - "gust": 2.24 + "deg": 90, + "gust": 1.79 }, "clouds": { - "all": 91 + "all": 36 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742508000, + "dt": 1745190000, "main": { - "temp": 3.33, - "feels_like": 3.33, - "pressure": 1023, - "humidity": 91, - "temp_min": 3.33, - "temp_max": 4.03 + "temp": 4.16, + "feels_like": 4.16, + "pressure": 1012, + "humidity": 84, + "temp_min": 3.84, + "temp_max": 4.44 }, "wind": { - "speed": 0.45, - "deg": 155, - "gust": 1.79 + "speed": 0.89, + "deg": 158, + "gust": 1.34 }, "clouds": { - "all": 81 + "all": 44 }, "weather": [ { - "id": 803, + "id": 802, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742511600, + "dt": 1745193600, "main": { - "temp": 2.75, - "feels_like": 2.75, - "pressure": 1023, - "humidity": 89, + "temp": 3.65, + "feels_like": 0.82, + "pressure": 1012, + "humidity": 87, "temp_min": 2.73, - "temp_max": 4.03 + "temp_max": 4.44 }, "wind": { - "speed": 0.45, - "deg": 203, - "gust": 1.34 + "speed": 3.09, + "deg": 63, + "gust": 4.37 }, "clouds": { - "all": 72 + "all": 50 }, "weather": [ { - "id": 803, + "id": 802, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742511600, + "dt": 1745193600, "main": { - "temp": 2.75, - "feels_like": 2.75, - "pressure": 1023, - "humidity": 89, + "temp": 3.65, + "feels_like": 0.82, + "pressure": 1012, + "humidity": 87, "temp_min": 2.73, - "temp_max": 4.03 + "temp_max": 4.44 }, "wind": { - "speed": 0.45, - "deg": 203, - "gust": 1.34 + "speed": 3.09, + "deg": 63, + "gust": 4.37 }, "clouds": { - "all": 72 + "all": 50 }, "weather": [ { - "id": 803, + "id": 802, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742515200, + "dt": 1745197200, "main": { - "temp": 1.64, - "feels_like": 1.64, - "pressure": 1023, - "humidity": 91, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 3.4, + "feels_like": 0.54, + "pressure": 1012, + "humidity": 85, + "temp_min": 2.18, + "temp_max": 4.44 }, "wind": { - "speed": 1.04, - "deg": 182, - "gust": 1.32 + "speed": 3.06, + "deg": 61, + "gust": 4.3 }, "clouds": { - "all": 66 + "all": 80 }, "weather": [ { @@ -13727,184 +13541,184 @@ ] }, { - "dt": 1742518800, + "dt": 1745200800, "main": { - "temp": 1.13, - "feels_like": 1.13, - "pressure": 1023, - "humidity": 92, - "temp_min": 0.51, - "temp_max": 2.03 + "temp": 3.88, + "feels_like": 1.22, + "pressure": 1012, + "humidity": 82, + "temp_min": 3.03, + "temp_max": 3.88 }, "wind": { - "speed": 0.85, - "deg": 153, - "gust": 1.02 + "speed": 2.92, + "deg": 64, + "gust": 3.83 }, "clouds": { - "all": 32 + "all": 90 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1742522400, + "dt": 1745204400, "main": { - "temp": 0.87, - "feels_like": 0.87, - "pressure": 1023, - "humidity": 92, - "temp_min": -0.05, - "temp_max": 1.66 + "temp": 2.77, + "feels_like": 0.19, + "pressure": 1012, + "humidity": 86, + "temp_min": 2.77, + "temp_max": 3.03 }, "wind": { - "speed": 0.45, - "deg": 227, - "gust": 1.34 + "speed": 2.58, + "deg": 63, + "gust": 3.26 }, "clouds": { - "all": 34 + "all": 94 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1742526000, + "dt": 1745208000, "main": { - "temp": 0.32, - "feels_like": 0.32, - "pressure": 1023, - "humidity": 91, - "temp_min": -0.6, - "temp_max": 1.11 + "temp": 3.33, + "feels_like": 1.02, + "pressure": 1012, + "humidity": 87, + "temp_min": 2.03, + "temp_max": 3.33 }, "wind": { - "speed": 0.45, - "deg": 266, - "gust": 0.89 + "speed": 2.39, + "deg": 66, + "gust": 3.06 }, "clouds": { - "all": 34 + "all": 95 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742529600, + "dt": 1745211600, "main": { - "temp": 0.06, - "feels_like": -1.56, - "pressure": 1024, - "humidity": 91, - "temp_min": -1.16, - "temp_max": 1.11 + "temp": 4.99, + "feels_like": 3.09, + "pressure": 1012, + "humidity": 79, + "temp_min": 3.03, + "temp_max": 4.99 }, "wind": { - "speed": 1.42, - "deg": 124, - "gust": 1.6 + "speed": 2.27, + "deg": 67, + "gust": 2.79 }, "clouds": { - "all": 35 + "all": 96 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742533200, + "dt": 1745215200, "main": { - "temp": -0.24, - "feels_like": -2.29, - "pressure": 1024, - "humidity": 91, - "temp_min": -1.16, - "temp_max": 0.55 + "temp": 5.92, + "feels_like": 4.17, + "pressure": 1012, + "humidity": 77, + "temp_min": 4.4, + "temp_max": 7.22 }, "wind": { - "speed": 1.67, - "deg": 122, - "gust": 1.86 + "speed": 2.29, + "deg": 64, + "gust": 2.64 }, "clouds": { - "all": 42 + "all": 95 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742536800, + "dt": 1745218800, "main": { - "temp": -0.24, - "feels_like": -2.14, - "pressure": 1024, - "humidity": 90, - "temp_min": -1.16, - "temp_max": 0.55 + "temp": 6.94, + "feels_like": 5.47, + "pressure": 1012, + "humidity": 71, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 1.57, - "deg": 136, - "gust": 1.67 + "speed": 2.17, + "deg": 69, + "gust": 2.64 }, "clouds": { - "all": 44 + "all": 99 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742540400, + "dt": 1745222400, "main": { - "temp": 0.62, - "feels_like": -0.97, - "pressure": 1025, - "humidity": 89, - "temp_min": -0.6, - "temp_max": 2.03 + "temp": 8.26, + "feels_like": 8.26, + "pressure": 1013, + "humidity": 69, + "temp_min": 7.77, + "temp_max": 10.03 }, "wind": { - "speed": 1.45, - "deg": 125, - "gust": 1.77 + "speed": 0.45, + "deg": 0, + "gust": 1.34 }, "clouds": { - "all": 97 + "all": 100 }, "weather": [ { @@ -13916,22 +13730,22 @@ ] }, { - "dt": 1742544000, + "dt": 1745226000, "main": { - "temp": 2.18, - "feels_like": 0.78, - "pressure": 1025, - "humidity": 92, - "temp_min": 2.18, - "temp_max": 3.03 + "temp": 9.07, + "feels_like": 9.07, + "pressure": 1013, + "humidity": 64, + "temp_min": 8.33, + "temp_max": 10.03 }, "wind": { - "speed": 1.47, - "deg": 94, - "gust": 1.99 + "speed": 0.45, + "deg": 338, + "gust": 1.79 }, "clouds": { - "all": 88 + "all": 100 }, "weather": [ { @@ -13943,130 +13757,130 @@ ] }, { - "dt": 1742547600, + "dt": 1745229600, "main": { - "temp": 5.03, - "feels_like": 3.85, - "pressure": 1025, - "humidity": 78, - "temp_min": 5.03, - "temp_max": 5.03 + "temp": 9.93, + "feels_like": 9.93, + "pressure": 1013, + "humidity": 60, + "temp_min": 9.44, + "temp_max": 10.51 }, "wind": { - "speed": 1.6, - "deg": 85, - "gust": 2.29 + "speed": 0.89, + "deg": 0, + "gust": 2.24 }, "clouds": { - "all": 67 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1742551200, + "dt": 1745233200, "main": { - "temp": 8.03, - "feels_like": 7.35, - "pressure": 1025, - "humidity": 79, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 11.04, + "feels_like": 9.66, + "pressure": 1013, + "humidity": 56, + "temp_min": 10.03, + "temp_max": 11.62 }, "wind": { - "speed": 1.55, - "deg": 74, - "gust": 2.29 + "speed": 0.89, + "deg": 315, + "gust": 1.79 }, "clouds": { - "all": 54 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1742554800, + "dt": 1745236800, "main": { - "temp": 9.03, - "feels_like": 8.27, - "pressure": 1024, - "humidity": 79, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 11.04, + "feels_like": 9.71, + "pressure": 1013, + "humidity": 58, + "temp_min": 10.55, + "temp_max": 11.62 }, "wind": { - "speed": 1.77, - "deg": 65, - "gust": 2.46 + "speed": 0.45, + "deg": 315, + "gust": 0.89 }, "clouds": { - "all": 52 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1742558400, + "dt": 1745240400, "main": { - "temp": 5.55, - "feels_like": 4.29, - "pressure": 1024, - "humidity": 81, - "temp_min": 5.55, - "temp_max": 10.03 + "temp": 12.45, + "feels_like": 11.16, + "pressure": 1013, + "humidity": 54, + "temp_min": 12.03, + "temp_max": 12.73 }, "wind": { - "speed": 1.74, - "deg": 77, - "gust": 2.5 + "speed": 0.45, + "deg": 338, + "gust": 0.89 }, "clouds": { - "all": 67 + "all": 93 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1742562000, + "dt": 1745244000, "main": { - "temp": 6.11, - "feels_like": 5.09, - "pressure": 1024, - "humidity": 75, - "temp_min": 6.11, - "temp_max": 10.03 + "temp": 12.4, + "feels_like": 11.11, + "pressure": 1013, + "humidity": 54, + "temp_min": 11.03, + "temp_max": 13.29 }, "wind": { - "speed": 1.6, - "deg": 98, - "gust": 2.25 + "speed": 0.89, + "deg": 293, + "gust": 3.13 }, "clouds": { - "all": 95 + "all": 94 }, "weather": [ { @@ -14078,22 +13892,52 @@ ] }, { - "dt": 1742565600, + "dt": 1745247600, "main": { - "temp": 6.66, - "feels_like": 5.45, - "pressure": 1024, - "humidity": 70, - "temp_min": 6.66, - "temp_max": 11.03 + "temp": 10.78, + "feels_like": 9.72, + "pressure": 1013, + "humidity": 69, + "temp_min": 10.55, + "temp_max": 12.03 }, "wind": { - "speed": 1.85, - "deg": 108, - "gust": 2.37 + "speed": 1.34, + "deg": 293, + "gust": 3.58 }, "clouds": { - "all": 89 + "all": 95 + }, + "weather": [ + { + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" + } + ], + "rain": { + "1h": 0.35 + } + }, + { + "dt": 1745251200, + "main": { + "temp": 10.18, + "feels_like": 9.11, + "pressure": 1013, + "humidity": 71, + "temp_min": 9.44, + "temp_max": 13.03 + }, + "wind": { + "speed": 0.45, + "deg": 270, + "gust": 0.89 + }, + "clouds": { + "all": 96 }, "weather": [ { @@ -14105,22 +13949,22 @@ ] }, { - "dt": 1742569200, + "dt": 1745254800, "main": { - "temp": 6.66, - "feels_like": 5.14, - "pressure": 1024, - "humidity": 69, - "temp_min": 6.66, + "temp": 9.97, + "feels_like": 9.03, + "pressure": 1013, + "humidity": 75, + "temp_min": 9.95, "temp_max": 11.03 }, "wind": { - "speed": 2.17, - "deg": 105, - "gust": 2.81 + "speed": 2.16, + "deg": 308, + "gust": 2.39 }, "clouds": { - "all": 93 + "all": 97 }, "weather": [ { @@ -14132,22 +13976,22 @@ ] }, { - "dt": 1742572800, + "dt": 1745258400, "main": { - "temp": 10.03, - "feels_like": 9.28, - "pressure": 1023, - "humidity": 84, - "temp_min": 10.03, - "temp_max": 10.03 + "temp": 9.99, + "feels_like": 8.75, + "pressure": 1013, + "humidity": 76, + "temp_min": 9.4, + "temp_max": 9.99 }, "wind": { - "speed": 2.23, - "deg": 96, - "gust": 2.47 + "speed": 2.59, + "deg": 300, + "gust": 3.38 }, "clouds": { - "all": 95 + "all": 97 }, "weather": [ { @@ -14159,22 +14003,22 @@ ] }, { - "dt": 1742576400, + "dt": 1745262000, "main": { - "temp": 9.03, - "feels_like": 7.71, - "pressure": 1023, - "humidity": 85, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 9.44, + "feels_like": 8.41, + "pressure": 1014, + "humidity": 74, + "temp_min": 8.84, + "temp_max": 9.44 }, "wind": { - "speed": 2.45, - "deg": 87, - "gust": 2.91 + "speed": 2.16, + "deg": 294, + "gust": 2.79 }, "clouds": { - "all": 96 + "all": 99 }, "weather": [ { @@ -14186,22 +14030,22 @@ ] }, { - "dt": 1742580000, + "dt": 1745265600, "main": { - "temp": 8.03, - "feels_like": 5.94, - "pressure": 1023, - "humidity": 86, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 8.6, + "feels_like": 8.6, + "pressure": 1014, + "humidity": 76, + "temp_min": 8.29, + "temp_max": 9.03 }, "wind": { - "speed": 3.34, - "deg": 95, - "gust": 4.83 + "speed": 0.45, + "deg": 45, + "gust": 0.89 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { @@ -14213,22 +14057,22 @@ ] }, { - "dt": 1742583600, + "dt": 1745269200, "main": { - "temp": 8.03, - "feels_like": 5.98, - "pressure": 1023, - "humidity": 85, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 8.05, + "feels_like": 7.54, + "pressure": 1014, + "humidity": 77, + "temp_min": 7.73, + "temp_max": 9.03 }, "wind": { - "speed": 3.27, - "deg": 100, - "gust": 4.27 + "speed": 1.4, + "deg": 287, + "gust": 1.72 }, "clouds": { - "all": 92 + "all": 100 }, "weather": [ { @@ -14240,22 +14084,22 @@ ] }, { - "dt": 1742587200, + "dt": 1745272800, "main": { - "temp": 7.03, - "feels_like": 4.56, - "pressure": 1023, - "humidity": 83, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 8.05, + "feels_like": 7.6, + "pressure": 1014, + "humidity": 79, + "temp_min": 7.73, + "temp_max": 8.33 }, "wind": { - "speed": 3.62, - "deg": 111, - "gust": 4.25 + "speed": 1.35, + "deg": 283, + "gust": 1.55 }, "clouds": { - "all": 91 + "all": 100 }, "weather": [ { @@ -14267,22 +14111,22 @@ ] }, { - "dt": 1742590800, + "dt": 1745276400, "main": { - "temp": 7.03, - "feels_like": 4.33, - "pressure": 1022, + "temp": 7.49, + "feels_like": 6.93, + "pressure": 1014, "humidity": 80, - "temp_min": 7.03, - "temp_max": 7.03 + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 4.05, - "deg": 117, - "gust": 4.91 + "speed": 1.38, + "deg": 286, + "gust": 1.53 }, "clouds": { - "all": 89 + "all": 94 }, "weather": [ { @@ -14294,22 +14138,22 @@ ] }, { - "dt": 1742594400, + "dt": 1745280000, "main": { - "temp": 6.03, - "feels_like": 3.42, - "pressure": 1023, - "humidity": 79, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 6.94, + "feels_like": 6.22, + "pressure": 1014, + "humidity": 81, + "temp_min": 6.62, + "temp_max": 7.22 }, "wind": { - "speed": 3.5, - "deg": 125, - "gust": 3.91 + "speed": 1.45, + "deg": 289, + "gust": 1.52 }, "clouds": { - "all": 85 + "all": 93 }, "weather": [ { @@ -14321,19 +14165,19 @@ ] }, { - "dt": 1742598000, + "dt": 1745283600, "main": { - "temp": 7.03, - "feels_like": 4.47, - "pressure": 1022, - "humidity": 78, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 6.94, + "feels_like": 6.94, + "pressure": 1014, + "humidity": 81, + "temp_min": 6.62, + "temp_max": 7.22 }, "wind": { - "speed": 3.78, - "deg": 122, - "gust": 4.53 + "speed": 0.45, + "deg": 158, + "gust": 1.79 }, "clouds": { "all": 85 @@ -14348,22 +14192,22 @@ ] }, { - "dt": 1742601600, + "dt": 1745287200, "main": { - "temp": 7.03, - "feels_like": 4.48, - "pressure": 1022, - "humidity": 79, - "temp_min": 7.03, + "temp": 6.64, + "feels_like": 6.64, + "pressure": 1014, + "humidity": 83, + "temp_min": 6.62, "temp_max": 7.03 }, "wind": { - "speed": 3.76, - "deg": 115, - "gust": 4.73 + "speed": 0.45, + "deg": 158, + "gust": 1.34 }, "clouds": { - "all": 96 + "all": 90 }, "weather": [ { @@ -14375,22 +14219,22 @@ ] }, { - "dt": 1742605200, + "dt": 1745290800, "main": { - "temp": 7.03, - "feels_like": 4.71, - "pressure": 1021, - "humidity": 79, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 6.38, + "feels_like": 5.34, + "pressure": 1015, + "humidity": 83, + "temp_min": 6.03, + "temp_max": 6.66 }, "wind": { - "speed": 3.37, - "deg": 104, - "gust": 3.84 + "speed": 1.65, + "deg": 320, + "gust": 2.02 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { @@ -14402,130 +14246,133 @@ ] }, { - "dt": 1742608800, + "dt": 1745294400, "main": { - "temp": 6.03, - "feels_like": 3.37, - "pressure": 1021, - "humidity": 80, + "temp": 6.38, + "feels_like": 6.38, + "pressure": 1014, + "humidity": 84, "temp_min": 6.03, - "temp_max": 6.03 + "temp_max": 6.66 }, "wind": { - "speed": 3.58, - "deg": 97, - "gust": 4.36 + "speed": 0.89, + "deg": 158, + "gust": 1.79 }, "clouds": { - "all": 93 + "all": 95 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742612400, + "dt": 1745298000, "main": { - "temp": 7.03, - "feels_like": 4.97, - "pressure": 1021, - "humidity": 80, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 6.38, + "feels_like": 6.38, + "pressure": 1015, + "humidity": 87, + "temp_min": 6.03, + "temp_max": 6.66 }, "wind": { - "speed": 2.96, - "deg": 97, - "gust": 3.8 + "speed": 0.45, + "deg": 158, + "gust": 1.34 }, "clouds": { - "all": 90 + "all": 96 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742616000, + "dt": 1745301600, "main": { - "temp": 7.03, - "feels_like": 5.1, - "pressure": 1021, - "humidity": 80, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 6.38, + "feels_like": 6.38, + "pressure": 1015, + "humidity": 89, + "temp_min": 6.03, + "temp_max": 6.66 }, "wind": { - "speed": 2.77, - "deg": 94, - "gust": 3.5 + "speed": 0.87, + "deg": 181, + "gust": 0.89 }, "clouds": { - "all": 93 + "all": 97 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.41 + } }, { - "dt": 1742619600, + "dt": 1745305200, "main": { - "temp": 7.03, - "feels_like": 4.81, - "pressure": 1020, - "humidity": 81, - "temp_min": 7.03, + "temp": 6.64, + "feels_like": 4.97, + "pressure": 1015, + "humidity": 91, + "temp_min": 6.62, "temp_max": 7.03 }, "wind": { - "speed": 3.2, - "deg": 102, - "gust": 3.75 + "speed": 2.35, + "deg": 188, + "gust": 2.26 }, "clouds": { - "all": 94 + "all": 100 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742623200, + "dt": 1745308800, "main": { - "temp": 7.03, - "feels_like": 4.64, - "pressure": 1020, - "humidity": 81, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 6.94, + "feels_like": 5.33, + "pressure": 1015, + "humidity": 92, + "temp_min": 6.62, + "temp_max": 7.22 }, "wind": { - "speed": 3.48, - "deg": 104, - "gust": 4.31 + "speed": 2.34, + "deg": 184, + "gust": 2.45 }, "clouds": { - "all": 93 + "all": 100 }, "weather": [ { @@ -14537,19 +14384,19 @@ ] }, { - "dt": 1742626800, + "dt": 1745312400, "main": { - "temp": 8.03, - "feels_like": 5.93, - "pressure": 1020, - "humidity": 79, - "temp_min": 8.03, + "temp": 7.49, + "feels_like": 6.11, + "pressure": 1015, + "humidity": 91, + "temp_min": 7.18, "temp_max": 8.03 }, "wind": { - "speed": 3.35, - "deg": 99, - "gust": 4.48 + "speed": 2.18, + "deg": 180, + "gust": 2.32 }, "clouds": { "all": 100 @@ -14564,19 +14411,19 @@ ] }, { - "dt": 1742630400, + "dt": 1745316000, "main": { - "temp": 9.03, - "feels_like": 6.87, - "pressure": 1019, - "humidity": 78, - "temp_min": 9.03, + "temp": 8, + "feels_like": 7.03, + "pressure": 1015, + "humidity": 90, + "temp_min": 7.77, "temp_max": 9.03 }, "wind": { - "speed": 3.88, - "deg": 101, - "gust": 5.17 + "speed": 1.82, + "deg": 180, + "gust": 2.11 }, "clouds": { "all": 100 @@ -14588,25 +14435,28 @@ "description": "overcast clouds", "icon": "04d" } - ] + ], + "rain": { + "1h": 0.1 + } }, { - "dt": 1742634000, + "dt": 1745319600, "main": { - "temp": 10.03, - "feels_like": 9.13, - "pressure": 1019, - "humidity": 78, - "temp_min": 10.03, - "temp_max": 10.03 + "temp": 8.56, + "feels_like": 8.56, + "pressure": 1016, + "humidity": 88, + "temp_min": 8.33, + "temp_max": 9.03 }, "wind": { - "speed": 3.95, - "deg": 100, - "gust": 5.42 + "speed": 1.23, + "deg": 197, + "gust": 1.32 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { @@ -14618,22 +14468,22 @@ ] }, { - "dt": 1742637600, + "dt": 1745323200, "main": { - "temp": 12.03, - "feels_like": 11.35, - "pressure": 1018, - "humidity": 79, - "temp_min": 12.03, - "temp_max": 12.03 + "temp": 9.11, + "feels_like": 9.11, + "pressure": 1015, + "humidity": 86, + "temp_min": 8.88, + "temp_max": 9.4 }, "wind": { - "speed": 3.81, - "deg": 103, - "gust": 5.57 + "speed": 0.45, + "deg": 0, + "gust": 1.34 }, "clouds": { - "all": 95 + "all": 100 }, "weather": [ { @@ -14645,22 +14495,22 @@ ] }, { - "dt": 1742641200, + "dt": 1745326800, "main": { - "temp": 11.03, - "feels_like": 10.28, - "pressure": 1018, - "humidity": 80, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 9.93, + "feels_like": 9.93, + "pressure": 1015, + "humidity": 83, + "temp_min": 9.03, + "temp_max": 10.51 }, "wind": { - "speed": 3.27, - "deg": 109, - "gust": 4.95 + "speed": 0.45, + "deg": 293, + "gust": 1.34 }, "clouds": { - "all": 90 + "all": 99 }, "weather": [ { @@ -14672,22 +14522,22 @@ ] }, { - "dt": 1742644800, + "dt": 1745330400, "main": { - "temp": 12.03, - "feels_like": 11.33, - "pressure": 1017, - "humidity": 78, - "temp_min": 12.03, + "temp": 9.37, + "feels_like": 9.37, + "pressure": 1015, + "humidity": 85, + "temp_min": 8.88, "temp_max": 12.03 }, "wind": { - "speed": 3.29, - "deg": 125, - "gust": 5.12 + "speed": 0.45, + "deg": 338, + "gust": 1.34 }, "clouds": { - "all": 95 + "all": 99 }, "weather": [ { @@ -14699,181 +14549,193 @@ ] }, { - "dt": 1742648400, + "dt": 1745334000, "main": { - "temp": 13.03, - "feels_like": 12.4, - "pressure": 1016, - "humidity": 77, - "temp_min": 13.03, - "temp_max": 13.03 + "temp": 8.82, + "feels_like": 8.82, + "pressure": 1015, + "humidity": 87, + "temp_min": 8.33, + "temp_max": 10.03 }, "wind": { - "speed": 2.3, - "deg": 140, - "gust": 3.93 + "speed": 0.45, + "deg": 270, + "gust": 1.34 }, "clouds": { - "all": 74 + "all": 99 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.21 + } }, { - "dt": 1742652000, + "dt": 1745337600, "main": { - "temp": 12.03, - "feels_like": 11.25, + "temp": 8.31, + "feels_like": 6.19, "pressure": 1016, - "humidity": 75, - "temp_min": 12.03, - "temp_max": 12.03 + "humidity": 88, + "temp_min": 8.29, + "temp_max": 9.03 }, "wind": { - "speed": 1.74, - "deg": 143, - "gust": 3.19 + "speed": 3.49, + "deg": 292, + "gust": 4.5 }, "clouds": { - "all": 58 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.32 + } }, { - "dt": 1742655600, + "dt": 1745341200, "main": { - "temp": 12.03, - "feels_like": 11.25, - "pressure": 1015, - "humidity": 75, - "temp_min": 12.03, - "temp_max": 12.03 + "temp": 7.2, + "feels_like": 6.66, + "pressure": 1016, + "humidity": 87, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 1.82, - "deg": 149, - "gust": 3.16 + "speed": 1.34, + "deg": 293, + "gust": 3.13 }, "clouds": { - "all": 52 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.24 + } }, { - "dt": 1742659200, + "dt": 1745344800, "main": { - "temp": 12.03, - "feels_like": 11.19, - "pressure": 1015, - "humidity": 73, - "temp_min": 12.03, - "temp_max": 12.03 + "temp": 6.64, + "feels_like": 6.64, + "pressure": 1017, + "humidity": 87, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 1.85, - "deg": 149, - "gust": 3.55 + "speed": 0.89, + "deg": 225, + "gust": 1.34 }, "clouds": { - "all": 64 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.37 + } }, { - "dt": 1742662800, + "dt": 1745348400, "main": { - "temp": 12.03, - "feels_like": 11.17, - "pressure": 1015, - "humidity": 72, - "temp_min": 12.03, - "temp_max": 12.03 + "temp": 5.78, + "feels_like": 3.03, + "pressure": 1017, + "humidity": 88, + "temp_min": 5.55, + "temp_max": 7.03 }, "wind": { - "speed": 1.91, - "deg": 146, - "gust": 3.4 + "speed": 3.64, + "deg": 304, + "gust": 4.47 }, "clouds": { - "all": 65 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1742666400, + "dt": 1745352000, "main": { - "temp": 11.03, - "feels_like": 10.12, - "pressure": 1016, - "humidity": 74, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 4.97, + "feels_like": 4.13, + "pressure": 1018, + "humidity": 88, + "temp_min": 4.95, + "temp_max": 7.03 }, "wind": { - "speed": 1.8, - "deg": 125, - "gust": 3.33 + "speed": 1.34, + "deg": 338, + "gust": 4.02 }, "clouds": { - "all": 74 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04n" } ] }, { - "dt": 1742670000, + "dt": 1745355600, "main": { - "temp": 9.03, - "feels_like": 7.58, - "pressure": 1017, - "humidity": 71, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 4.67, + "feels_like": 3.79, + "pressure": 1018, + "humidity": 85, + "temp_min": 4.44, + "temp_max": 6.03 }, "wind": { - "speed": 2.64, - "deg": 108, - "gust": 3.7 + "speed": 1.34, + "deg": 338, + "gust": 4.02 }, "clouds": { "all": 100 @@ -14888,19 +14750,19 @@ ] }, { - "dt": 1742673600, + "dt": 1745359200, "main": { - "temp": 9.03, - "feels_like": 7.47, - "pressure": 1017, - "humidity": 72, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 4.42, + "feels_like": 4.42, + "pressure": 1019, + "humidity": 85, + "temp_min": 4.4, + "temp_max": 6.03 }, "wind": { - "speed": 2.8, - "deg": 105, - "gust": 3.54 + "speed": 0.89, + "deg": 338, + "gust": 2.24 }, "clouds": { "all": 100 @@ -14915,19 +14777,19 @@ ] }, { - "dt": 1742677200, + "dt": 1745362800, "main": { - "temp": 9.03, - "feels_like": 7.27, - "pressure": 1018, - "humidity": 74, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 4.11, + "feels_like": 4.11, + "pressure": 1020, + "humidity": 83, + "temp_min": 3.88, + "temp_max": 5.03 }, "wind": { - "speed": 3.12, - "deg": 106, - "gust": 3.8 + "speed": 0.89, + "deg": 338, + "gust": 3.13 }, "clouds": { "all": 100 @@ -14942,19 +14804,19 @@ ] }, { - "dt": 1742680800, + "dt": 1745366400, "main": { - "temp": 9.03, - "feels_like": 7.56, - "pressure": 1018, - "humidity": 74, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 3.31, + "feels_like": 2.26, + "pressure": 1020, + "humidity": 78, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 2.67, - "deg": 101, - "gust": 3.23 + "speed": 1.34, + "deg": 315, + "gust": 3.13 }, "clouds": { "all": 100 @@ -14969,19 +14831,19 @@ ] }, { - "dt": 1742684400, + "dt": 1745370000, "main": { - "temp": 8.03, - "feels_like": 6.84, - "pressure": 1018, - "humidity": 74, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 3.31, + "feels_like": 1.64, + "pressure": 1021, + "humidity": 73, + "temp_min": 3.29, + "temp_max": 4.03 }, "wind": { - "speed": 2.07, - "deg": 95, - "gust": 2.34 + "speed": 1.79, + "deg": 338, + "gust": 4.02 }, "clouds": { "all": 100 @@ -14996,19 +14858,19 @@ ] }, { - "dt": 1742688000, + "dt": 1745373600, "main": { - "temp": 7.03, - "feels_like": 6.03, - "pressure": 1019, - "humidity": 74, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 2.45, + "feels_like": 2.45, + "pressure": 1021, + "humidity": 72, + "temp_min": 2.22, + "temp_max": 3.03 }, "wind": { - "speed": 1.7, - "deg": 97, - "gust": 1.87 + "speed": 0.45, + "deg": 0, + "gust": 1.79 }, "clouds": { "all": 100 @@ -15023,19 +14885,19 @@ ] }, { - "dt": 1742691600, + "dt": 1745377200, "main": { - "temp": 7.03, - "feels_like": 6.06, - "pressure": 1019, - "humidity": 74, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 1.34, + "feels_like": -1.93, + "pressure": 1021, + "humidity": 78, + "temp_min": 1.11, + "temp_max": 3.03 }, "wind": { - "speed": 1.68, - "deg": 101, - "gust": 1.75 + "speed": 3.05, + "deg": 12, + "gust": 5.42 }, "clouds": { "all": 100 @@ -15050,19 +14912,19 @@ ] }, { - "dt": 1742695200, + "dt": 1745380800, "main": { - "temp": 7.03, - "feels_like": 5.81, - "pressure": 1019, - "humidity": 75, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 0.83, + "feels_like": -1.78, + "pressure": 1022, + "humidity": 80, + "temp_min": 0.51, + "temp_max": 3.03 }, "wind": { - "speed": 1.92, - "deg": 100, - "gust": 1.75 + "speed": 2.25, + "deg": 9, + "gust": 4.12 }, "clouds": { "all": 100 @@ -15072,24 +14934,24 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742698800, + "dt": 1745384400, "main": { - "temp": 6.03, - "feels_like": 4.23, - "pressure": 1020, - "humidity": 75, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 2.58, + "feels_like": 2.58, + "pressure": 1022, + "humidity": 76, + "temp_min": 1.07, + "temp_max": 3.88 }, "wind": { - "speed": 2.37, - "deg": 99, - "gust": 2.48 + "speed": 0.89, + "deg": 45, + "gust": 1.79 }, "clouds": { "all": 100 @@ -15099,756 +14961,729 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742702400, + "dt": 1745388000, "main": { - "temp": 6.03, - "feels_like": 4.14, - "pressure": 1020, - "humidity": 75, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 3.91, + "feels_like": 1.85, + "pressure": 1023, + "humidity": 70, + "temp_min": 3.29, + "temp_max": 4.44 }, "wind": { - "speed": 2.48, - "deg": 103, - "gust": 2.8 + "speed": 2.24, + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1742706000, + "dt": 1745391600, "main": { - "temp": 6.03, - "feels_like": 4.19, - "pressure": 1020, - "humidity": 75, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 4.46, + "feels_like": 2.97, + "pressure": 1023, + "humidity": 65, + "temp_min": 3.84, + "temp_max": 5.03 }, "wind": { - "speed": 2.42, - "deg": 100, - "gust": 2.72 + "speed": 1.79, + "deg": 23, + "gust": 4.02 }, "clouds": { - "all": 84 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742709600, + "dt": 1745395200, "main": { - "temp": 6.03, - "feels_like": 4.15, - "pressure": 1020, - "humidity": 67, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 5.57, + "feels_like": 4.81, + "pressure": 1023, + "humidity": 62, + "temp_min": 4.95, + "temp_max": 6.11 }, "wind": { - "speed": 2.46, - "deg": 87, - "gust": 3.32 + "speed": 1.34, + "deg": 23, + "gust": 2.68 }, "clouds": { - "all": 74 + "all": 100 }, "weather": [ { - "id": 803, + "id": 804, "main": "Clouds", - "description": "broken clouds", + "description": "overcast clouds", "icon": "04d" } ] }, { - "dt": 1742713200, + "dt": 1745398800, "main": { - "temp": 6.03, - "feels_like": 4.4, - "pressure": 1020, - "humidity": 64, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 6.13, + "feels_like": 4.9, + "pressure": 1023, + "humidity": 56, + "temp_min": 5.03, + "temp_max": 6.66 }, "wind": { - "speed": 2.18, - "deg": 89, - "gust": 3.2 + "speed": 1.79, + "deg": 0, + "gust": 4.02 }, "clouds": { - "all": 8 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742716800, + "dt": 1745402400, "main": { - "temp": 7.03, - "feels_like": 7.03, - "pressure": 1020, - "humidity": 61, - "temp_min": 7.03, + "temp": 6.38, + "feels_like": 4.75, + "pressure": 1024, + "humidity": 51, + "temp_min": 6.07, "temp_max": 7.03 }, "wind": { - "speed": 1.19, - "deg": 82, - "gust": 2.34 + "speed": 2.24, + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 5 + "all": 98 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742720400, + "dt": 1745406000, "main": { - "temp": 8.03, - "feels_like": 8.03, - "pressure": 1020, - "humidity": 61, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 6.94, + "feels_like": 5.41, + "pressure": 1024, + "humidity": 44, + "temp_min": 6.62, + "temp_max": 7.22 }, "wind": { - "speed": 1.05, - "deg": 4, - "gust": 2.23 + "speed": 2.24, + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 3 + "all": 98 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742724000, + "dt": 1745409600, "main": { - "temp": 10.03, - "feels_like": 8.6, - "pressure": 1020, - "humidity": 58, - "temp_min": 10.03, - "temp_max": 10.03 + "temp": 7.49, + "feels_like": 6.98, + "pressure": 1024, + "humidity": 43, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 0.8, - "deg": 9, - "gust": 1.75 + "speed": 1.34, + "deg": 45, + "gust": 3.13 }, "clouds": { - "all": 2 + "all": 97 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742727600, + "dt": 1745413200, "main": { - "temp": 10.03, - "feels_like": 8.63, - "pressure": 1020, - "humidity": 59, - "temp_min": 10.03, - "temp_max": 10.03 + "temp": 7.49, + "feels_like": 5.72, + "pressure": 1024, + "humidity": 43, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 0.99, - "deg": 28, - "gust": 2.35 + "speed": 2.68, + "deg": 23, + "gust": 4.92 }, "clouds": { - "all": 2 + "all": 70 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1742731200, + "dt": 1745416800, "main": { - "temp": 11.03, - "feels_like": 9.81, - "pressure": 1019, - "humidity": 62, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 7.84, + "feels_like": 6.88, + "pressure": 1023, + "humidity": 38, + "temp_min": 6.62, + "temp_max": 9.03 }, "wind": { - "speed": 0.87, - "deg": 30, - "gust": 2.15 + "speed": 1.79, + "deg": 68, + "gust": 3.58 }, "clouds": { - "all": 2 + "all": 68 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1742734800, + "dt": 1745420400, "main": { - "temp": 11.03, - "feels_like": 9.86, - "pressure": 1019, - "humidity": 64, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 7.49, + "feels_like": 6.47, + "pressure": 1024, + "humidity": 41, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 1.66, - "deg": 91, - "gust": 3.97 + "speed": 1.79, + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 1 + "all": 69 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1742738400, + "dt": 1745424000, "main": { - "temp": 12.03, - "feels_like": 10.99, - "pressure": 1018, - "humidity": 65, - "temp_min": 12.03, - "temp_max": 12.03 + "temp": 7.24, + "feels_like": 6.7, + "pressure": 1023, + "humidity": 44, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 1.93, - "deg": 93, - "gust": 4.47 + "speed": 1.34, + "deg": 0, + "gust": 4.02 }, "clouds": { - "all": 0 + "all": 70 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1742742000, + "dt": 1745427600, "main": { - "temp": 11.03, - "feels_like": 9.91, - "pressure": 1017, - "humidity": 66, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 6.34, + "feels_like": 5.14, + "pressure": 1024, + "humidity": 44, + "temp_min": 6.11, + "temp_max": 8.03 }, "wind": { - "speed": 2.39, - "deg": 99, - "gust": 5.02 + "speed": 1.79, + "deg": 23, + "gust": 4.47 }, "clouds": { - "all": 0 + "all": 71 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1742745600, + "dt": 1745431200, "main": { - "temp": 11.03, - "feels_like": 9.99, - "pressure": 1016, - "humidity": 69, - "temp_min": 11.03, - "temp_max": 11.03 + "temp": 5.53, + "feels_like": 3.76, + "pressure": 1024, + "humidity": 48, + "temp_min": 5.51, + "temp_max": 7.03 }, "wind": { - "speed": 2.75, - "deg": 101, - "gust": 5.4 + "speed": 2.24, + "deg": 23, + "gust": 5.36 }, "clouds": { - "all": 0 + "all": 71 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1742749200, + "dt": 1745434800, "main": { - "temp": 10.03, - "feels_like": 8.97, - "pressure": 1016, - "humidity": 72, - "temp_min": 10.03, - "temp_max": 10.03 + "temp": 4.71, + "feels_like": 3.26, + "pressure": 1024, + "humidity": 53, + "temp_min": 4.4, + "temp_max": 6.03 }, "wind": { - "speed": 2.95, - "deg": 96, - "gust": 4.7 + "speed": 1.79, + "deg": 309, + "gust": 4.02 }, "clouds": { - "all": 0 + "all": 68 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } ] }, { - "dt": 1742752800, + "dt": 1745438400, "main": { - "temp": 9.03, - "feels_like": 6.63, - "pressure": 1015, - "humidity": 74, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 3.91, + "feels_like": 2.34, + "pressure": 1024, + "humidity": 58, + "temp_min": 3.29, + "temp_max": 5.03 }, "wind": { - "speed": 4.39, - "deg": 121, - "gust": 5.15 + "speed": 1.79, + "deg": 25, + "gust": 5.81 }, "clouds": { - "all": 1 + "all": 67 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } ] }, { - "dt": 1742756400, + "dt": 1745442000, "main": { - "temp": 8.03, - "feels_like": 5.79, - "pressure": 1015, - "humidity": 76, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 3.05, + "feels_like": 3.05, + "pressure": 1025, + "humidity": 64, + "temp_min": 2.73, + "temp_max": 3.33 }, "wind": { - "speed": 3.61, - "deg": 127, - "gust": 5.63 + "speed": 0.45, + "deg": 39, + "gust": 3.13 }, "clouds": { - "all": 1 + "all": 63 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } ] }, { - "dt": 1742760000, + "dt": 1745445600, "main": { - "temp": 7.03, - "feels_like": 5.55, - "pressure": 1015, - "humidity": 74, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 1.94, + "feels_like": -1.95, + "pressure": 1025, + "humidity": 69, + "temp_min": 1.03, + "temp_max": 2.22 }, "wind": { - "speed": 2.2, - "deg": 130, - "gust": 4.15 + "speed": 4.08, + "deg": 53, + "gust": 4.48 }, "clouds": { - "all": 0 + "all": 66 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } ] }, { - "dt": 1742763600, + "dt": 1745449200, "main": { - "temp": 7.03, - "feels_like": 6.36, - "pressure": 1016, - "humidity": 72, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 1.38, + "feels_like": -2.33, + "pressure": 1025, + "humidity": 69, + "temp_min": 0.03, + "temp_max": 1.66 }, "wind": { - "speed": 1.42, - "deg": 121, - "gust": 3.04 + "speed": 3.62, + "deg": 56, + "gust": 4.16 }, "clouds": { - "all": 0 + "all": 72 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } ] }, { - "dt": 1742767200, + "dt": 1745452800, "main": { - "temp": 6.03, - "feels_like": 4.11, - "pressure": 1015, - "humidity": 73, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 0.57, + "feels_like": -3, + "pressure": 1024, + "humidity": 71, + "temp_min": -0.97, + "temp_max": 1.11 }, "wind": { - "speed": 2.51, - "deg": 115, - "gust": 4.25 + "speed": 3.22, + "deg": 51, + "gust": 3.72 }, "clouds": { - "all": 0 + "all": 76 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04n" } ] }, { - "dt": 1742770800, + "dt": 1745456400, "main": { - "temp": 7.03, - "feels_like": 5.64, - "pressure": 1015, - "humidity": 73, - "temp_min": 7.03, - "temp_max": 7.03 + "temp": 0.55, + "feels_like": -2.61, + "pressure": 1024, + "humidity": 75, + "temp_min": -0.97, + "temp_max": 0.55 }, "wind": { - "speed": 2.1, - "deg": 108, - "gust": 3.03 + "speed": 2.75, + "deg": 41, + "gust": 3.1 }, "clouds": { - "all": 0 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1742774400, + "dt": 1745460000, "main": { - "temp": 6.03, - "feels_like": 3.99, - "pressure": 1014, - "humidity": 73, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 0.55, + "feels_like": -1.92, + "pressure": 1024, + "humidity": 78, + "temp_min": -1.97, + "temp_max": 0.55 }, "wind": { - "speed": 2.67, - "deg": 96, - "gust": 3.15 + "speed": 2.09, + "deg": 30, + "gust": 2.73 }, "clouds": { - "all": 0 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1742778000, + "dt": 1745463600, "main": { - "temp": 6.03, - "feels_like": 3.89, - "pressure": 1013, - "humidity": 73, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": -0.01, + "feels_like": -1.73, + "pressure": 1024, + "humidity": 80, + "temp_min": -1.97, + "temp_max": -0.01 }, "wind": { - "speed": 2.8, - "deg": 98, - "gust": 3.49 + "speed": 1.48, + "deg": 3, + "gust": 2.52 }, "clouds": { - "all": 8 + "all": 100 }, "weather": [ { - "id": 800, - "main": "Clear", - "description": "clear sky", - "icon": "01n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } ] }, { - "dt": 1742781600, + "dt": 1745467200, "main": { - "temp": 5.03, - "feels_like": 2.77, - "pressure": 1012, - "humidity": 73, - "temp_min": 5.03, - "temp_max": 5.03 + "temp": 0.55, + "feels_like": -1.44, + "pressure": 1024, + "humidity": 82, + "temp_min": -1.97, + "temp_max": 0.55 }, "wind": { - "speed": 2.7, - "deg": 94, - "gust": 3.38 + "speed": 1.71, + "deg": 339, + "gust": 2.68 }, "clouds": { - "all": 42 + "all": 100 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742785200, + "dt": 1745470800, "main": { - "temp": 5.03, - "feels_like": 3.11, - "pressure": 1011, - "humidity": 73, - "temp_min": 5.03, - "temp_max": 5.03 + "temp": 1.11, + "feels_like": -1.17, + "pressure": 1024, + "humidity": 81, + "temp_min": -0.97, + "temp_max": 1.11 }, "wind": { - "speed": 2.3, - "deg": 88, - "gust": 2.96 + "speed": 2.01, + "deg": 342, + "gust": 3.08 }, "clouds": { - "all": 37 + "all": 100 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742788800, + "dt": 1745474400, "main": { - "temp": 5.03, - "feels_like": 2.98, - "pressure": 1010, - "humidity": 72, - "temp_min": 5.03, - "temp_max": 5.03 - }, - "wind": { - "speed": 2.45, - "deg": 96, - "gust": 3.02 - }, - "clouds": { - "all": 27 - }, - "weather": [ - { - "id": 802, - "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" - } - ] - }, - { - "dt": 1742792400, - "main": { - "temp": 6.03, - "feels_like": 4.49, - "pressure": 1009, - "humidity": 72, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": -0.05, + "feels_like": -0.05, + "pressure": 1025, + "humidity": 81, + "temp_min": -0.05, + "temp_max": 0.03 }, "wind": { - "speed": 2.08, - "deg": 99, - "gust": 2.55 + "speed": 0.45, + "deg": 158, + "gust": 1.79 }, "clouds": { - "all": 27 + "all": 99 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03n" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742796000, + "dt": 1745478000, "main": { - "temp": 6.03, - "feels_like": 4.51, - "pressure": 1008, - "humidity": 69, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 1.07, + "feels_like": 1.07, + "pressure": 1025, + "humidity": 77, + "temp_min": 1.03, + "temp_max": 1.07 }, "wind": { - "speed": 2.06, - "deg": 102, - "gust": 2.45 + "speed": 0.89, + "deg": 158, + "gust": 2.24 }, "clouds": { - "all": 49 + "all": 100 }, "weather": [ { - "id": 802, + "id": 804, "main": "Clouds", - "description": "scattered clouds", - "icon": "03d" + "description": "overcast clouds", + "icon": "04d" } ] }, { - "dt": 1742799600, + "dt": 1745481600, "main": { - "temp": 6.03, - "feels_like": 4.29, - "pressure": 1007, - "humidity": 67, - "temp_min": 6.03, - "temp_max": 6.03 + "temp": 4.16, + "feels_like": 4.16, + "pressure": 1024, + "humidity": 68, + "temp_min": 3.03, + "temp_max": 4.44 }, "wind": { - "speed": 2.3, - "deg": 105, - "gust": 2.62 + "speed": 0.89, + "deg": 180, + "gust": 1.79 }, "clouds": { - "all": 93 + "all": 97 }, "weather": [ { @@ -15860,22 +15695,22 @@ ] }, { - "dt": 1742803200, + "dt": 1745485200, "main": { - "temp": 8.03, - "feels_like": 6.79, - "pressure": 1006, - "humidity": 66, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 3, + "feels_like": 1.9, + "pressure": 1024, + "humidity": 77, + "temp_min": 2.77, + "temp_max": 4.03 }, "wind": { - "speed": 2.12, - "deg": 105, - "gust": 3.09 + "speed": 1.34, + "deg": 23, + "gust": 4.02 }, "clouds": { - "all": 96 + "all": 98 }, "weather": [ { @@ -15886,26 +15721,26 @@ } ], "rain": { - "1h": 1.23 + "1h": 1.54 } }, { - "dt": 1742806800, + "dt": 1745488800, "main": { - "temp": 8.03, - "feels_like": 7.04, - "pressure": 1005, - "humidity": 65, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 4.46, + "feels_like": 4.46, + "pressure": 1024, + "humidity": 69, + "temp_min": 3.84, + "temp_max": 4.99 }, "wind": { - "speed": 1.85, - "deg": 109, - "gust": 3.1 + "speed": 0.89, + "deg": 293, + "gust": 1.79 }, "clouds": { - "all": 98 + "all": 99 }, "weather": [ { @@ -15917,52 +15752,49 @@ ] }, { - "dt": 1742810400, + "dt": 1745492400, "main": { - "temp": 8.03, - "feels_like": 8.03, - "pressure": 1004, + "temp": 4.71, + "feels_like": 4.71, + "pressure": 1024, "humidity": 65, - "temp_min": 8.03, - "temp_max": 8.03 + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { - "speed": 1.01, - "deg": 106, - "gust": 2.06 + "speed": 0.89, + "deg": 270, + "gust": 2.68 }, "clouds": { - "all": 98 + "all": 97 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.16 - } + ] }, { - "dt": 1742814000, + "dt": 1745496000, "main": { - "temp": 8.03, - "feels_like": 8.03, - "pressure": 1003, - "humidity": 67, - "temp_min": 8.03, - "temp_max": 8.03 + "temp": 5.53, + "feels_like": 3.76, + "pressure": 1025, + "humidity": 63, + "temp_min": 5.51, + "temp_max": 6.03 }, "wind": { - "speed": 1.13, - "deg": 38, - "gust": 1.52 + "speed": 2.24, + "deg": 293, + "gust": 5.81 }, "clouds": { - "all": 99 + "all": 96 }, "weather": [ { @@ -15974,565 +15806,427 @@ ] }, { - "dt": 1742817600, + "dt": 1745499600, "main": { - "temp": 10.03, - "feels_like": 9.07, - "pressure": 1002, - "humidity": 76, - "temp_min": 10.03, - "temp_max": 10.03 + "temp": 4.46, + "feels_like": 2.11, + "pressure": 1025, + "humidity": 73, + "temp_min": 3.84, + "temp_max": 4.99 }, "wind": { - "speed": 0.76, - "deg": 19, - "gust": 1.05 + "speed": 2.68, + "deg": 270, + "gust": 5.36 }, "clouds": { "all": 99 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.47 - } + ] }, { - "dt": 1742821200, + "dt": 1745503200, "main": { - "temp": 9.03, - "feels_like": 9.03, - "pressure": 1001, - "humidity": 79, - "temp_min": 9.03, - "temp_max": 9.03 + "temp": 5.57, + "feels_like": 3.43, + "pressure": 1025, + "humidity": 71, + "temp_min": 4.95, + "temp_max": 6.11 }, "wind": { - "speed": 0.78, - "deg": 302, - "gust": 1.34 + "speed": 2.68, + "deg": 293, + "gust": 4.92 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.59 - } + ] }, { - "dt": 1742824800, + "dt": 1745506800, "main": { - "temp": 6.11, - "feels_like": 6.11, - "pressure": 1001, - "humidity": 86, - "temp_min": 6.11, - "temp_max": 7.03 + "temp": 5.57, + "feels_like": 4.25, + "pressure": 1025, + "humidity": 60, + "temp_min": 4.95, + "temp_max": 6.11 }, "wind": { - "speed": 0.45, - "deg": 143, - "gust": 3.13 + "speed": 1.79, + "deg": 293, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 96 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.8 - } + ] }, { - "dt": 1742828400, + "dt": 1745510400, "main": { - "temp": 5.78, - "feels_like": 4.5, - "pressure": 1001, - "humidity": 87, - "temp_min": 5.55, - "temp_max": 6.07 + "temp": 6.09, + "feels_like": 4.41, + "pressure": 1025, + "humidity": 54, + "temp_min": 5.03, + "temp_max": 6.11 }, "wind": { - "speed": 1.79, - "deg": 225, - "gust": 5.36 + "speed": 2.24, + "deg": 315, + "gust": 4.92 }, "clouds": { - "all": 100 + "all": 94 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.34 - } + ] }, { - "dt": 1742832000, + "dt": 1745514000, "main": { - "temp": 5.22, - "feels_like": 3.01, - "pressure": 1000, - "humidity": 88, - "temp_min": 4.99, + "temp": 4.93, + "feels_like": 3.05, + "pressure": 1026, + "humidity": 59, + "temp_min": 4.44, "temp_max": 6.03 }, "wind": { - "speed": 2.68, - "deg": 225, - "gust": 6.71 + "speed": 2.24, + "deg": 293, + "gust": 4.92 }, "clouds": { - "all": 100 + "all": 87 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.33 - } + ] }, { - "dt": 1742835600, + "dt": 1745517600, "main": { - "temp": 4.11, - "feels_like": -0.5, - "pressure": 1000, - "humidity": 90, - "temp_min": 3.88, - "temp_max": 4.4 + "temp": 3.56, + "feels_like": 2.54, + "pressure": 1026, + "humidity": 64, + "temp_min": 3.33, + "temp_max": 6.03 }, "wind": { - "speed": 6.65, - "deg": 252, - "gust": 12.54 + "speed": 1.34, + "deg": 293, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 77 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 2.24 - } + ] }, { - "dt": 1742839200, + "dt": 1745521200, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1000, - "humidity": 92, - "temp_min": 3.84, + "temp": 2.2, + "feels_like": 1, + "pressure": 1027, + "humidity": 77, + "temp_min": 2.18, "temp_max": 4.03 }, "wind": { - "speed": 0.45, - "deg": 248, - "gust": 1.79 + "speed": 1.34, + "deg": 45, + "gust": 4.47 }, "clouds": { - "all": 100 + "all": 38 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } - ], - "rain": { - "1h": 1.37 - } + ] }, { - "dt": 1742842800, + "dt": 1745524800, "main": { - "temp": 3.31, - "feels_like": 3.31, - "pressure": 1001, - "humidity": 92, - "temp_min": 3.29, - "temp_max": 4.03 + "temp": 1.34, + "feels_like": -2.07, + "pressure": 1027, + "humidity": 78, + "temp_min": 1.11, + "temp_max": 3.03 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.79 + "speed": 3.22, + "deg": 334, + "gust": 5.43 }, "clouds": { - "all": 100 + "all": 42 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 0.31 - } + ] }, { - "dt": 1742846400, + "dt": 1745528400, "main": { - "temp": 2.75, - "feels_like": 2.75, - "pressure": 1001, - "humidity": 93, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": 1.09, + "feels_like": -1.8, + "pressure": 1027, + "humidity": 78, + "temp_min": 1.07, + "temp_max": 2.03 }, "wind": { - "speed": 0.89, - "deg": 180, - "gust": 2.24 + "speed": 2.57, + "deg": 335, + "gust": 4.79 }, "clouds": { - "all": 100 + "all": 46 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 0.8 - } + ] }, { - "dt": 1742850000, + "dt": 1745532000, "main": { - "temp": 3.05, - "feels_like": 3.05, - "pressure": 1002, - "humidity": 92, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": -0.03, + "feels_like": -0.03, + "pressure": 1028, + "humidity": 82, + "temp_min": -0.05, + "temp_max": 1.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 1.79 + "speed": 0.45, + "deg": 135, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 44 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742853600, + "dt": 1745535600, "main": { - "temp": 3.05, - "feels_like": -0.99, - "pressure": 1002, - "humidity": 92, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": -0.6, + "feels_like": -0.6, + "pressure": 1028, + "humidity": 83, + "temp_min": -0.6, + "temp_max": 1.03 }, "wind": { - "speed": 4.79, - "deg": 279, - "gust": 8.9 + "speed": 0.89, + "deg": 158, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 45 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742857200, + "dt": 1745539200, "main": { - "temp": 2.75, - "feels_like": 1.62, - "pressure": 1003, - "humidity": 92, - "temp_min": 2.73, - "temp_max": 4.03 + "temp": -0.56, + "feels_like": -0.56, + "pressure": 1027, + "humidity": 85, + "temp_min": -0.56, + "temp_max": 1.03 }, "wind": { - "speed": 1.34, - "deg": 225, - "gust": 3.13 + "speed": 1.23, + "deg": 332, + "gust": 2.55 }, "clouds": { - "all": 100 + "all": 46 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1742860800, + "dt": 1745542800, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1003, - "humidity": 89, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": -0.56, + "feels_like": -0.56, + "pressure": 1027, + "humidity": 86, + "temp_min": -0.97, + "temp_max": -0.56 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.79 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" - } - ] - }, - { - "dt": 1742864400, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1003, - "humidity": 89, - "temp_min": 2.18, - "temp_max": 4.03 - }, - "wind": { - "speed": 0.45, - "deg": 203, - "gust": 1.79 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" - } - ] - }, - { - "dt": 1742868000, - "main": { - "temp": 2.45, - "feels_like": 2.45, - "pressure": 1003, - "humidity": 88, - "temp_min": 2.22, - "temp_max": 4.03 - }, - "wind": { - "speed": 0.45, - "deg": 181, - "gust": 1.79 + "speed": 1.08, + "deg": 313, + "gust": 1.95 }, "clouds": { - "all": 100 + "all": 58 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1742871600, + "dt": 1745546400, "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1004, - "humidity": 90, - "temp_min": 2.18, - "temp_max": 4.03 + "temp": -0.56, + "feels_like": -0.56, + "pressure": 1027, + "humidity": 87, + "temp_min": -0.97, + "temp_max": -0.56 }, "wind": { - "speed": 0.45, - "deg": 203, - "gust": 1.34 + "speed": 1.15, + "deg": 306, + "gust": 2.14 }, "clouds": { - "all": 100 + "all": 76 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1742875200, + "dt": 1745550000, "main": { - "temp": 1.89, - "feels_like": 1.89, - "pressure": 1004, - "humidity": 91, - "temp_min": 1.66, - "temp_max": 4.03 + "temp": -0.01, + "feels_like": -0.01, + "pressure": 1027, + "humidity": 86, + "temp_min": -0.97, + "temp_max": -0.01 }, "wind": { - "speed": 0.45, - "deg": 248, - "gust": 1.79 + "speed": 0.9, + "deg": 295, + "gust": 1.68 }, "clouds": { - "all": 100 + "all": 84 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04n" } ] }, { - "dt": 1742878800, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1004, - "humidity": 90, - "temp_min": 2.18, - "temp_max": 4.03 - }, - "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.79 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" - } - ] - }, - { - "dt": 1742882400, + "dt": 1745553600, "main": { - "temp": 2.2, - "feels_like": -1.94, - "pressure": 1004, - "humidity": 90, - "temp_min": 2.18, - "temp_max": 3.03 - }, - "wind": { - "speed": 4.6, - "deg": 233, - "gust": 5.28 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.25 - } - }, - { - "dt": 1742886000, - "main": { - "temp": 2.75, - "feels_like": -1.16, - "pressure": 1005, - "humidity": 90, - "temp_min": 2.73, - "temp_max": 3.03 + "temp": -0.56, + "feels_like": -0.56, + "pressure": 1027, + "humidity": 87, + "temp_min": -0.97, + "temp_max": -0.56 }, "wind": { - "speed": 4.42, - "deg": 235, - "gust": 5.42 + "speed": 0.75, + "deg": 287, + "gust": 1.47 }, "clouds": { - "all": 100 + "all": 88 }, "weather": [ { @@ -16544,22 +16238,22 @@ ] }, { - "dt": 1742889600, + "dt": 1745557200, "main": { - "temp": 3.31, - "feels_like": -0.15, - "pressure": 1005, - "humidity": 88, - "temp_min": 3.03, - "temp_max": 3.33 + "temp": 1.66, + "feels_like": 1.66, + "pressure": 1027, + "humidity": 82, + "temp_min": -0.97, + "temp_max": 1.66 }, "wind": { - "speed": 3.9, - "deg": 243, - "gust": 5.26 + "speed": 0.69, + "deg": 278, + "gust": 1.19 }, "clouds": { - "all": 100 + "all": 87 }, "weather": [ { @@ -16571,22 +16265,22 @@ ] }, { - "dt": 1742893200, + "dt": 1745560800, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1006, - "humidity": 87, - "temp_min": 3.84, - "temp_max": 4.03 + "temp": 1.07, + "feels_like": 1.07, + "pressure": 1027, + "humidity": 84, + "temp_min": 0.03, + "temp_max": 1.07 }, "wind": { "speed": 0.45, "deg": 248, - "gust": 0.89 + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 87 }, "weather": [ { @@ -16598,1570 +16292,859 @@ ] }, { - "dt": 1742896800, + "dt": 1745564400, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1006, - "humidity": 89, - "temp_min": 3.84, - "temp_max": 4.03 + "temp": 3.91, + "feels_like": 3.91, + "pressure": 1027, + "humidity": 73, + "temp_min": 2.03, + "temp_max": 4.44 }, "wind": { - "speed": 0.89, + "speed": 0.45, "deg": 203, - "gust": 1.79 + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 80 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742900400, + "dt": 1745568000, "main": { - "temp": 4.16, - "feels_like": 4.16, - "pressure": 1007, - "humidity": 90, - "temp_min": 3.84, - "temp_max": 4.44 + "temp": 5.18, + "feels_like": 4.37, + "pressure": 1027, + "humidity": 66, + "temp_min": 4.03, + "temp_max": 6.07 }, "wind": { - "speed": 0.89, - "deg": 225, - "gust": 1.79 + "speed": 1.34, + "deg": 248, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 60 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742904000, + "dt": 1745571600, "main": { - "temp": 4.16, - "feels_like": 4.16, - "pressure": 1007, - "humidity": 90, - "temp_min": 3.84, - "temp_max": 4.44 - }, - "wind": { - "speed": 0.89, - "deg": 203, - "gust": 1.79 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.45 - } - }, - { - "dt": 1742907600, - "main": { - "temp": 3.31, - "feels_like": 3.31, - "pressure": 1007, - "humidity": 91, - "temp_min": 3.29, - "temp_max": 4.03 - }, - "wind": { - "speed": 0.89, - "deg": 180, - "gust": 2.68 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.8 - } - }, - { - "dt": 1742911200, - "main": { - "temp": 3.31, - "feels_like": 3.31, - "pressure": 1008, - "humidity": 92, - "temp_min": 3.29, - "temp_max": 4.03 - }, - "wind": { - "speed": 0.45, - "deg": 225, - "gust": 1.79 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.42 - } - }, - { - "dt": 1742914800, - "main": { - "temp": 3.6, - "feels_like": 3.6, - "pressure": 1008, - "humidity": 92, - "temp_min": 3.29, - "temp_max": 4.03 - }, - "wind": { - "speed": 0.45, - "deg": 248, - "gust": 1.79 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.32 - } - }, - { - "dt": 1742918400, - "main": { - "temp": 3.31, - "feels_like": -0.24, - "pressure": 1008, - "humidity": 92, - "temp_min": 3.03, - "temp_max": 3.33 - }, - "wind": { - "speed": 4.03, - "deg": 215, - "gust": 4.55 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.21 - } - }, - { - "dt": 1742922000, - "main": { - "temp": 2.75, - "feels_like": -1.26, - "pressure": 1008, - "humidity": 92, - "temp_min": 2.73, - "temp_max": 3.03 - }, - "wind": { - "speed": 4.59, - "deg": 213, - "gust": 5.62 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.65 - } - }, - { - "dt": 1742925600, - "main": { - "temp": 2.2, - "feels_like": 0.64, - "pressure": 1009, - "humidity": 93, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 1.58, - "deg": 216, - "gust": 3.15 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.53 - } - }, - { - "dt": 1742929200, - "main": { - "temp": 2.2, - "feels_like": -0.1, - "pressure": 1010, - "humidity": 93, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 2.19, - "deg": 220, - "gust": 4.03 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.24 - } - }, - { - "dt": 1742932800, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1010, - "humidity": 94, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.45, - "deg": 143, - "gust": 1.34 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.21 - } - }, - { - "dt": 1742936400, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1010, - "humidity": 94, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.45, - "deg": 135, - "gust": 2.24 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.41 - } - }, - { - "dt": 1742940000, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1011, - "humidity": 94, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.45, - "deg": 143, - "gust": 1.34 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.18 - } - }, - { - "dt": 1742943600, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1011, - "humidity": 94, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.89, - "deg": 158, - "gust": 2.68 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.14 - } - }, - { - "dt": 1742943600, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1011, - "humidity": 94, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.89, - "deg": 158, - "gust": 2.68 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.14 - } - }, - { - "dt": 1742947200, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1011, - "humidity": 93, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.45, - "deg": 145, - "gust": 2.24 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" - } - ], - "rain": { - "1h": 1.33 - } - }, - { - "dt": 1742950800, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1011, - "humidity": 93, - "temp_min": 2.03, - "temp_max": 2.22 - }, - "wind": { - "speed": 0.45, - "deg": 162, - "gust": 1.79 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.87 - } - }, - { - "dt": 1742954400, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1011, - "humidity": 93, - "temp_min": 2.18, - "temp_max": 3.03 - }, - "wind": { - "speed": 0.89, - "deg": 185, - "gust": 3.13 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.15 - } - }, - { - "dt": 1742958000, - "main": { - "temp": 2.2, - "feels_like": 1, - "pressure": 1011, - "humidity": 93, - "temp_min": 2.18, - "temp_max": 3.03 - }, - "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.55 - } - }, - { - "dt": 1742961600, - "main": { - "temp": 1.89, - "feels_like": 0.65, - "pressure": 1011, - "humidity": 93, - "temp_min": 1.66, - "temp_max": 3.03 - }, - "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" - } - ], - "rain": { - "1h": 0.49 - } - }, - { - "dt": 1742965200, - "main": { - "temp": 2.2, - "feels_like": 2.2, - "pressure": 1012, - "humidity": 94, - "temp_min": 2.18, - "temp_max": 4.03 - }, - "wind": { - "speed": 0.89, - "deg": 146, - "gust": 3.58 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 1 - } - }, - { - "dt": 1742968800, - "main": { - "temp": 2.2, - "feels_like": 1, - "pressure": 1011, - "humidity": 94, - "temp_min": 2.18, - "temp_max": 4.03 - }, - "wind": { - "speed": 1.34, - "deg": 111, - "gust": 3.58 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.38 - } - }, - { - "dt": 1742972400, - "main": { - "temp": 3.31, - "feels_like": 2.26, - "pressure": 1011, - "humidity": 93, - "temp_min": 3.29, - "temp_max": 4.03 - }, - "wind": { - "speed": 1.34, - "deg": 203, - "gust": 2.68 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.28 - } - }, - { - "dt": 1742976000, - "main": { - "temp": 4.16, - "feels_like": 2.62, - "pressure": 1012, - "humidity": 93, - "temp_min": 3.84, - "temp_max": 5.03 - }, - "wind": { - "speed": 1.79, - "deg": 133, - "gust": 3.58 + "temp": 4.67, + "feels_like": 4.67, + "pressure": 1027, + "humidity": 58, + "temp_min": 4.03, + "temp_max": 4.95 + }, + "wind": { + "speed": 0.45, + "deg": 203, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 67 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742979600, + "dt": 1745575200, "main": { - "temp": 4.97, - "feels_like": 3.56, - "pressure": 1011, - "humidity": 91, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 5.48, + "feels_like": 5.48, + "pressure": 1027, + "humidity": 54, + "temp_min": 4.99, + "temp_max": 6.07 }, "wind": { - "speed": 1.79, - "deg": 143, - "gust": 4.92 + "speed": 0.45, + "deg": 67, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 71 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742983200, + "dt": 1745578800, "main": { - "temp": 5.53, - "feels_like": 4.77, - "pressure": 1011, - "humidity": 90, - "temp_min": 5.51, - "temp_max": 7.03 + "temp": 6.6, + "feels_like": 6.6, + "pressure": 1027, + "humidity": 49, + "temp_min": 6.03, + "temp_max": 7.18 }, "wind": { - "speed": 1.34, + "speed": 0.89, "deg": 225, - "gust": 3.13 + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 77 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1742986800, + "dt": 1745582400, "main": { - "temp": 5.22, - "feels_like": 4.42, - "pressure": 1012, - "humidity": 91, - "temp_min": 4.99, - "temp_max": 6.03 + "temp": 6.09, + "feels_like": 6.09, + "pressure": 1027, + "humidity": 48, + "temp_min": 6.03, + "temp_max": 6.11 }, "wind": { - "speed": 1.34, - "deg": 108, - "gust": 3.13 + "speed": 0.45, + "deg": 25, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 77 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.54 - } + ] }, { - "dt": 1742990400, + "dt": 1745586000, "main": { - "temp": 5.53, - "feels_like": 4.77, - "pressure": 1011, - "humidity": 92, - "temp_min": 5.51, - "temp_max": 6.03 + "temp": 6.94, + "feels_like": 6.36, + "pressure": 1027, + "humidity": 49, + "temp_min": 6.03, + "temp_max": 7.22 }, "wind": { "speed": 1.34, - "deg": 203, - "gust": 4.47 + "deg": 338, + "gust": 4.02 }, "clouds": { - "all": 100 + "all": 64 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.39 - } + ] }, { - "dt": 1742994000, + "dt": 1745589600, "main": { - "temp": 6.34, - "feels_like": 5.68, - "pressure": 1011, - "humidity": 89, - "temp_min": 6.11, - "temp_max": 7.03 + "temp": 6.69, + "feels_like": 6.08, + "pressure": 1027, + "humidity": 52, + "temp_min": 6.03, + "temp_max": 7.22 }, "wind": { "speed": 1.34, - "deg": 144, + "deg": 338, "gust": 3.13 }, "clouds": { - "all": 100 + "all": 69 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.12 - } + ] }, { - "dt": 1742997600, + "dt": 1745593200, "main": { - "temp": 5.78, - "feels_like": 5.78, - "pressure": 1010, - "humidity": 91, - "temp_min": 5.55, - "temp_max": 7.03 + "temp": 6.38, + "feels_like": 6.38, + "pressure": 1027, + "humidity": 54, + "temp_min": 6.03, + "temp_max": 6.66 }, "wind": { "speed": 0.89, - "deg": 121, - "gust": 2.24 + "deg": 338, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 64 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1 - } + ] }, { - "dt": 1743001200, + "dt": 1745596800, "main": { - "temp": 5.53, - "feels_like": 4.77, - "pressure": 1010, - "humidity": 92, + "temp": 5.83, + "feels_like": 5.11, + "pressure": 1027, + "humidity": 57, "temp_min": 5.51, - "temp_max": 7.03 - }, - "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 - }, - "clouds": { - "all": 100 - }, - "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" - } - ], - "rain": { - "1h": 0.29 - } - }, - { - "dt": 1743004800, - "main": { - "temp": 5.22, - "feels_like": 4.42, - "pressure": 1010, - "humidity": 92, - "temp_min": 4.99, - "temp_max": 6.03 + "temp_max": 6.11 }, "wind": { "speed": 1.34, - "deg": 203, - "gust": 2.68 + "deg": 315, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 66 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.09 - } + ] }, { - "dt": 1743008400, + "dt": 1745600400, "main": { - "temp": 4.97, - "feels_like": 4.97, - "pressure": 1009, - "humidity": 92, + "temp": 5.27, + "feels_like": 4.47, + "pressure": 1027, + "humidity": 63, "temp_min": 4.95, "temp_max": 6.03 }, "wind": { - "speed": 0.89, - "deg": 169, - "gust": 2.68 + "speed": 1.34, + "deg": 315, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 62 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.94 - } + ] }, { - "dt": 1743012000, + "dt": 1745604000, "main": { - "temp": 4.97, - "feels_like": 4.97, - "pressure": 1009, - "humidity": 93, - "temp_min": 4.95, + "temp": 4.37, + "feels_like": 4.37, + "pressure": 1028, + "humidity": 64, + "temp_min": 3.88, "temp_max": 5.03 }, "wind": { "speed": 0.89, - "deg": 205, + "deg": 315, "gust": 2.24 }, "clouds": { - "all": 100 + "all": 57 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.43 - } + ] }, { - "dt": 1743015600, + "dt": 1745607600, "main": { - "temp": 4.97, - "feels_like": 4.97, - "pressure": 1008, - "humidity": 93, - "temp_min": 4.95, + "temp": 3.77, + "feels_like": 1.21, + "pressure": 1028, + "humidity": 67, + "temp_min": 2.77, "temp_max": 5.03 }, "wind": { - "speed": 0.89, - "deg": 203, - "gust": 3.58 + "speed": 2.77, + "deg": 304, + "gust": 3.92 }, "clouds": { - "all": 100 + "all": 39 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1743019200, + "dt": 1745611200, "main": { - "temp": 5.27, - "feels_like": 5.27, - "pressure": 1008, - "humidity": 91, - "temp_min": 4.95, - "temp_max": 5.55 + "temp": 2.15, + "feels_like": 2.15, + "pressure": 1028, + "humidity": 74, + "temp_min": 1.66, + "temp_max": 4.03 }, "wind": { - "speed": 0.89, - "deg": 135, - "gust": 2.24 + "speed": 0.45, + "deg": 0, + "gust": 0.45 }, "clouds": { - "all": 100 + "all": 33 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1743022800, + "dt": 1745614800, "main": { - "temp": 5.22, - "feels_like": 5.22, - "pressure": 1006, - "humidity": 91, - "temp_min": 4.99, - "temp_max": 5.51 + "temp": 1.09, + "feels_like": -0.26, + "pressure": 1028, + "humidity": 79, + "temp_min": 1.07, + "temp_max": 3.03 }, "wind": { - "speed": 0.45, - "deg": 135, + "speed": 1.34, + "deg": 158, "gust": 1.79 }, "clouds": { - "all": 100 + "all": 30 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "description": "scattered clouds", + "icon": "03n" } ] }, { - "dt": 1743026400, + "dt": 1745618400, "main": { - "temp": 4.67, - "feels_like": 2.88, - "pressure": 1005, - "humidity": 93, - "temp_min": 4.44, - "temp_max": 5.03 + "temp": 1.11, + "feels_like": -1.54, + "pressure": 1028, + "humidity": 80, + "temp_min": 1.11, + "temp_max": 2.03 }, "wind": { - "speed": 2.1, - "deg": 130, - "gust": 2.7 + "speed": 2.34, + "deg": 241, + "gust": 3.42 }, "clouds": { - "all": 100 + "all": 29 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 1.26 - } + ] }, { - "dt": 1743030000, + "dt": 1745622000, "main": { - "temp": 4.42, - "feels_like": 1.71, - "pressure": 1004, - "humidity": 94, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 0.55, + "feels_like": -2.55, + "pressure": 1028, + "humidity": 82, + "temp_min": 0.55, + "temp_max": 2.03 }, "wind": { - "speed": 3.14, - "deg": 102, - "gust": 3.67 + "speed": 2.68, + "deg": 229, + "gust": 3.07 }, "clouds": { - "all": 100 + "all": 27 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 1.33 - } + ] }, { - "dt": 1743033600, + "dt": 1745625600, "main": { - "temp": 4.42, - "feels_like": 3.22, - "pressure": 1003, - "humidity": 95, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 0.55, + "feels_like": 0.55, + "pressure": 1028, + "humidity": 86, + "temp_min": 0.55, + "temp_max": 1.03 }, "wind": { - "speed": 1.55, - "deg": 100, - "gust": 1.7 + "speed": 0.45, + "deg": 121, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 24 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" } - ], - "rain": { - "1h": 0.75 - } + ] }, { - "dt": 1743037200, + "dt": 1745625600, "main": { - "temp": 4.42, - "feels_like": 4.42, - "pressure": 1002, - "humidity": 95, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 0.55, + "feels_like": 0.55, + "pressure": 1028, + "humidity": 86, + "temp_min": 0.55, + "temp_max": 1.03 }, "wind": { - "speed": 0.63, - "deg": 69, - "gust": 1.24 + "speed": 0.45, + "deg": 121, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 24 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" } - ], - "rain": { - "1h": 1.68 - } + ] }, { - "dt": 1743040800, + "dt": 1745629200, "main": { - "temp": 4.16, - "feels_like": 4.16, - "pressure": 1002, - "humidity": 96, - "temp_min": 3.84, - "temp_max": 6.03 + "temp": 0.55, + "feels_like": -2.54, + "pressure": 1028, + "humidity": 83, + "temp_min": 0.03, + "temp_max": 0.55 }, "wind": { - "speed": 0.67, - "deg": 159, - "gust": 0.89 + "speed": 2.67, + "deg": 214, + "gust": 3.07 }, "clouds": { - "all": 100 + "all": 23 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 801, + "main": "Clouds", + "description": "few clouds", + "icon": "02n" } - ], - "rain": { - "1h": 1 - } + ] }, { - "dt": 1743044400, + "dt": 1745632800, "main": { - "temp": 4.16, - "feels_like": 4.16, - "pressure": 1002, - "humidity": 96, - "temp_min": 3.84, - "temp_max": 6.03 + "temp": 0.55, + "feels_like": -2.33, + "pressure": 1028, + "humidity": 81, + "temp_min": 0.03, + "temp_max": 0.55 }, "wind": { - "speed": 0.45, - "deg": 0, - "gust": 2.24 + "speed": 2.46, + "deg": 211, + "gust": 2.96 }, "clouds": { - "all": 100 + "all": 25 }, "weather": [ - { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + { + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 0.32 - } + ] }, { - "dt": 1743048000, + "dt": 1745636400, "main": { - "temp": 4.42, - "feels_like": 4.42, - "pressure": 1001, - "humidity": 96, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 0.55, + "feels_like": -1.72, + "pressure": 1027, + "humidity": 79, + "temp_min": 0.55, + "temp_max": 1.03 }, "wind": { - "speed": 0.89, - "deg": 135, - "gust": 2.24 + "speed": 1.92, + "deg": 205, + "gust": 2.4 }, "clouds": { - "all": 100 + "all": 26 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03n" } - ], - "rain": { - "1h": 0.11 - } + ] }, { - "dt": 1743051600, + "dt": 1745640000, "main": { - "temp": 4.71, - "feels_like": 4.71, - "pressure": 1001, - "humidity": 96, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 0.57, + "feels_like": 0.57, + "pressure": 1027, + "humidity": 79, + "temp_min": -0.05, + "temp_max": 1.11 }, "wind": { - "speed": 0.45, - "deg": 112, - "gust": 1.79 + "speed": 0.89, + "deg": 0, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 27 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1743055200, + "dt": 1745643600, "main": { - "temp": 5.27, - "feels_like": 5.27, - "pressure": 1002, - "humidity": 94, - "temp_min": 4.95, - "temp_max": 5.55 + "temp": 1.66, + "feels_like": 1.66, + "pressure": 1027, + "humidity": 74, + "temp_min": 1.03, + "temp_max": 1.66 }, "wind": { - "speed": 0.89, - "deg": 134, - "gust": 2.68 + "speed": 1.3, + "deg": 178, + "gust": 1.64 }, "clouds": { - "all": 100 + "all": 26 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } - ], - "rain": { - "1h": 0.91 - } + ] }, { - "dt": 1743058800, + "dt": 1745647200, "main": { - "temp": 6.11, - "feels_like": 6.11, - "pressure": 1002, - "humidity": 94, - "temp_min": 6.07, - "temp_max": 6.11 + "temp": 2.22, + "feels_like": 2.22, + "pressure": 1027, + "humidity": 71, + "temp_min": 2.03, + "temp_max": 2.22 }, "wind": { "speed": 0.89, - "deg": 135, - "gust": 2.24 + "deg": 140, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 32 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1743062400, + "dt": 1745650800, "main": { - "temp": 6.64, - "feels_like": 6.64, - "pressure": 1002, - "humidity": 92, - "temp_min": 6.62, - "temp_max": 8.03 + "temp": 2.8, + "feels_like": 1.68, + "pressure": 1027, + "humidity": 69, + "temp_min": 2.18, + "temp_max": 4.03 }, "wind": { - "speed": 0.45, - "deg": 139, - "gust": 0.89 + "speed": 1.34, + "deg": 94, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 58 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1743066000, + "dt": 1745654400, "main": { - "temp": 5.85, - "feels_like": 5.13, - "pressure": 1001, - "humidity": 84, - "temp_min": 5.85, - "temp_max": 5.85 + "temp": 5.02, + "feels_like": 5.02, + "pressure": 1027, + "humidity": 63, + "temp_min": 4.4, + "temp_max": 5.55 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 3.13 + "speed": 0.45, + "deg": 132, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 48 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 802, + "main": "Clouds", + "description": "scattered clouds", + "icon": "03d" } - ], - "rain": { - "1h": 1.23 - } + ] }, { - "dt": 1743069600, + "dt": 1745658000, "main": { - "temp": 5.85, - "feels_like": 5.85, - "pressure": 1002, - "humidity": 88, - "temp_min": 5.85, - "temp_max": 5.85 + "temp": 6.89, + "feels_like": 6.89, + "pressure": 1027, + "humidity": 58, + "temp_min": 6.66, + "temp_max": 7.18 }, "wind": { "speed": 0.89, - "deg": 0, - "gust": 2.24 + "deg": 225, + "gust": 2.68 }, "clouds": { - "all": 100 + "all": 42 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1743073200, + "dt": 1745661600, "main": { - "temp": 5.85, - "feels_like": 5.13, - "pressure": 1002, - "humidity": 90, - "temp_min": 5.85, - "temp_max": 5.85 + "temp": 8.22, + "feels_like": 8.22, + "pressure": 1027, + "humidity": 57, + "temp_min": 7.22, + "temp_max": 9.4 }, "wind": { - "speed": 1.34, + "speed": 0.89, "deg": 203, - "gust": 3.13 + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 46 }, "weather": [ { - "id": 804, + "id": 802, "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "description": "scattered clouds", + "icon": "03d" } ] }, { - "dt": 1743076800, + "dt": 1745665200, "main": { - "temp": 5.8, - "feels_like": 4.07, - "pressure": 1002, - "humidity": 86, - "temp_min": 5.8, - "temp_max": 5.8 + "temp": 8.33, + "feels_like": 8.33, + "pressure": 1027, + "humidity": 61, + "temp_min": 8.33, + "temp_max": 9.03 }, "wind": { - "speed": 2.24, - "deg": 225, - "gust": 4.47 + "speed": 0.45, + "deg": 311, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 54 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.63 - } + ] }, { - "dt": 1743080400, + "dt": 1745668800, "main": { - "temp": 5.8, - "feels_like": 5.8, - "pressure": 1002, - "humidity": 85, - "temp_min": 5.8, - "temp_max": 5.8 + "temp": 8.88, + "feels_like": 8.88, + "pressure": 1026, + "humidity": 56, + "temp_min": 8.88, + "temp_max": 10.03 }, "wind": { - "speed": 0.89, - "deg": 122, - "gust": 3.58 + "speed": 0.45, + "deg": 47, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 56 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1743084000, + "dt": 1745672400, "main": { - "temp": 5.36, - "feels_like": 4.57, - "pressure": 1002, - "humidity": 94, - "temp_min": 5.36, - "temp_max": 5.36 + "temp": 9.97, + "feels_like": 9.34, + "pressure": 1026, + "humidity": 50, + "temp_min": 9.95, + "temp_max": 11.03 }, "wind": { - "speed": 1.34, - "deg": 110, - "gust": 4.02 + "speed": 1.79, + "deg": 23, + "gust": 4.92 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { @@ -18173,22 +17156,22 @@ ] }, { - "dt": 1743087600, + "dt": 1745676000, "main": { - "temp": 5.4, - "feels_like": 1.42, - "pressure": 1001, - "humidity": 92, - "temp_min": 5.4, - "temp_max": 5.4 + "temp": 9.95, + "feels_like": 9.31, + "pressure": 1026, + "humidity": 43, + "temp_min": 9.95, + "temp_max": 12.03 }, "wind": { - "speed": 5.96, - "deg": 244, - "gust": 11.83 + "speed": 1.79, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 90 }, "weather": [ { @@ -18200,22 +17183,22 @@ ] }, { - "dt": 1743091200, + "dt": 1745679600, "main": { - "temp": 5.66, - "feels_like": 5.66, - "pressure": 1002, - "humidity": 89, - "temp_min": 5.66, - "temp_max": 5.66 + "temp": 10.53, + "feels_like": 8.81, + "pressure": 1026, + "humidity": 45, + "temp_min": 10.51, + "temp_max": 12.03 }, "wind": { - "speed": 0.89, - "deg": 135, - "gust": 2.24 + "speed": 1.34, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 85 }, "weather": [ { @@ -18227,22 +17210,22 @@ ] }, { - "dt": 1743094800, + "dt": 1745683200, "main": { - "temp": 5.48, - "feels_like": 5.48, - "pressure": 1001, - "humidity": 90, - "temp_min": 5.48, - "temp_max": 5.48 + "temp": 10.57, + "feels_like": 8.86, + "pressure": 1025, + "humidity": 45, + "temp_min": 9.95, + "temp_max": 12.03 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.79 + "speed": 1.79, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { @@ -18254,109 +17237,103 @@ ] }, { - "dt": 1743098400, + "dt": 1745686800, "main": { - "temp": 5.37, - "feels_like": 3.62, - "pressure": 1001, - "humidity": 91, - "temp_min": 5.37, - "temp_max": 5.37 + "temp": 9.33, + "feels_like": 9.33, + "pressure": 1025, + "humidity": 50, + "temp_min": 8.33, + "temp_max": 12.03 }, "wind": { - "speed": 2.18, - "deg": 181, - "gust": 2.88 + "speed": 0.89, + "deg": 293, + "gust": 1.79 }, "clouds": { - "all": 100 + "all": 91 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.12 - } + ] }, { - "dt": 1743102000, + "dt": 1745690400, "main": { - "temp": 5.04, - "feels_like": 3.28, - "pressure": 1001, - "humidity": 94, - "temp_min": 5.04, - "temp_max": 5.04 + "temp": 10.51, + "feels_like": 9.03, + "pressure": 1025, + "humidity": 54, + "temp_min": 10.51, + "temp_max": 11.03 }, "wind": { - "speed": 2.13, - "deg": 162, - "gust": 1.97 + "speed": 0.45, + "deg": 270, + "gust": 1.34 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1743105600, + "dt": 1745694000, "main": { - "temp": 4.85, - "feels_like": 4.85, - "pressure": 1000, - "humidity": 94, - "temp_min": 4.85, - "temp_max": 4.85 + "temp": 9.4, + "feels_like": 9.4, + "pressure": 1025, + "humidity": 58, + "temp_min": 9.4, + "temp_max": 10.03 }, "wind": { - "speed": 1.17, - "deg": 165, - "gust": 1.13 + "speed": 0.45, + "deg": 338, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 84 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 803, + "main": "Clouds", + "description": "broken clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.8 - } + ] }, { - "dt": 1743109200, + "dt": 1745697600, "main": { - "temp": 4.59, - "feels_like": 3.25, - "pressure": 1000, - "humidity": 94, - "temp_min": 4.59, - "temp_max": 4.59 + "temp": 6.38, + "feels_like": 6.38, + "pressure": 1025, + "humidity": 62, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 1.68, - "deg": 92, - "gust": 1.5 + "speed": 1.02, + "deg": 269, + "gust": 1.32 }, "clouds": { - "all": 100 + "all": 93 }, "weather": [ { @@ -18368,52 +17345,49 @@ ] }, { - "dt": 1743112800, + "dt": 1745701200, "main": { - "temp": 4.45, - "feels_like": 2.65, - "pressure": 998, - "humidity": 93, - "temp_min": 4.45, - "temp_max": 4.45 + "temp": 5.32, + "feels_like": 5.32, + "pressure": 1025, + "humidity": 65, + "temp_min": 4.4, + "temp_max": 6.11 }, "wind": { - "speed": 2.07, - "deg": 80, - "gust": 2.97 + "speed": 0.89, + "deg": 264, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 96 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.35 - } + ] }, { - "dt": 1743116400, + "dt": 1745704800, "main": { - "temp": 4.15, - "feels_like": 2.33, - "pressure": 998, - "humidity": 92, - "temp_min": 4.15, - "temp_max": 4.15 + "temp": 4.51, + "feels_like": 4.51, + "pressure": 1025, + "humidity": 66, + "temp_min": 3.29, + "temp_max": 5.55 }, "wind": { - "speed": 2.05, - "deg": 88, - "gust": 2.56 + "speed": 0.45, + "deg": 261, + "gust": 0.89 }, "clouds": { - "all": 100 + "all": 97 }, "weather": [ { @@ -18425,22 +17399,22 @@ ] }, { - "dt": 1743120000, + "dt": 1745708400, "main": { - "temp": 4.04, - "feels_like": 2.29, - "pressure": 996, - "humidity": 91, - "temp_min": 4.04, - "temp_max": 4.04 + "temp": 5.55, + "feels_like": 5.55, + "pressure": 1025, + "humidity": 66, + "temp_min": 3.03, + "temp_max": 5.55 }, "wind": { - "speed": 1.96, - "deg": 64, - "gust": 2.24 + "speed": 0.77, + "deg": 197, + "gust": 0.86 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -18452,22 +17426,22 @@ ] }, { - "dt": 1743123600, + "dt": 1745712000, "main": { - "temp": 4.27, - "feels_like": 2.54, - "pressure": 995, - "humidity": 89, - "temp_min": 4.27, - "temp_max": 4.27 + "temp": 4.99, + "feels_like": 4.99, + "pressure": 1024, + "humidity": 69, + "temp_min": 2.03, + "temp_max": 4.99 }, "wind": { - "speed": 1.98, - "deg": 70, - "gust": 1.85 + "speed": 0.04, + "deg": 153, + "gust": 0.28 }, "clouds": { - "all": 100 + "all": 98 }, "weather": [ { @@ -18479,19 +17453,19 @@ ] }, { - "dt": 1743127200, + "dt": 1745715600, "main": { - "temp": 4.21, - "feels_like": 1.26, - "pressure": 993, - "humidity": 89, - "temp_min": 4.21, - "temp_max": 4.21 + "temp": 4.44, + "feels_like": 4.44, + "pressure": 1023, + "humidity": 72, + "temp_min": 2.03, + "temp_max": 4.44 }, "wind": { - "speed": 3.41, - "deg": 74, - "gust": 4.64 + "speed": 0.27, + "deg": 70, + "gust": 0.38 }, "clouds": { "all": 100 @@ -18506,109 +17480,100 @@ ] }, { - "dt": 1743130800, + "dt": 1745719200, "main": { - "temp": 4.21, - "feels_like": 1.07, - "pressure": 992, - "humidity": 89, - "temp_min": 4.21, - "temp_max": 4.21 + "temp": 3.88, + "feels_like": 3.88, + "pressure": 1023, + "humidity": 81, + "temp_min": 2.03, + "temp_max": 3.88 }, "wind": { - "speed": 3.7, - "deg": 79, - "gust": 4.71 + "speed": 0.4, + "deg": 103, + "gust": 0.5 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.12 - } + ] }, { - "dt": 1743134400, + "dt": 1745722800, "main": { - "temp": 4.07, - "feels_like": 1.03, - "pressure": 991, - "humidity": 90, - "temp_min": 4.07, - "temp_max": 4.07 + "temp": 3.88, + "feels_like": 3.88, + "pressure": 1023, + "humidity": 71, + "temp_min": 2.03, + "temp_max": 3.88 }, "wind": { - "speed": 3.5, - "deg": 72, - "gust": 4.48 + "speed": 0.73, + "deg": 101, + "gust": 0.8 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10n" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04n" } - ], - "rain": { - "1h": 0.87 - } + ] }, { - "dt": 1743138000, + "dt": 1745726400, "main": { - "temp": 3.93, - "feels_like": 1.7, - "pressure": 990, - "humidity": 89, - "temp_min": 3.93, - "temp_max": 3.93 + "temp": 3.33, + "feels_like": 3.33, + "pressure": 1023, + "humidity": 82, + "temp_min": 2.03, + "temp_max": 3.33 }, "wind": { - "speed": 2.43, - "deg": 81, - "gust": 3.16 + "speed": 0.4, + "deg": 89, + "gust": 0.42 }, "clouds": { "all": 100 }, "weather": [ { - "id": 502, - "main": "Rain", - "description": "heavy intensity rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 4.86 - } + ] }, { - "dt": 1743141600, + "dt": 1745730000, "main": { - "temp": 4.24, - "feels_like": 2.66, - "pressure": 990, - "humidity": 87, - "temp_min": 4.24, - "temp_max": 4.24 + "temp": 3.88, + "feels_like": 3.88, + "pressure": 1022, + "humidity": 85, + "temp_min": 2.03, + "temp_max": 3.88 }, "wind": { - "speed": 1.84, - "deg": 81, - "gust": 1.83 + "speed": 0.49, + "deg": 103, + "gust": 0.48 }, "clouds": { "all": 100 @@ -18623,19 +17588,19 @@ ] }, { - "dt": 1743145200, + "dt": 1745733600, "main": { - "temp": 4.71, - "feels_like": 3.49, - "pressure": 990, - "humidity": 87, - "temp_min": 4.71, - "temp_max": 4.71 + "temp": 4.99, + "feels_like": 4.99, + "pressure": 1022, + "humidity": 80, + "temp_min": 3.03, + "temp_max": 4.99 }, "wind": { - "speed": 1.6, - "deg": 49, - "gust": 1.06 + "speed": 0.79, + "deg": 101, + "gust": 0.95 }, "clouds": { "all": 100 @@ -18650,18 +17615,19 @@ ] }, { - "dt": 1743148800, + "dt": 1745737200, "main": { - "temp": 5.13, - "feels_like": 5.13, - "pressure": 990, - "humidity": 86, - "temp_min": 5.13, - "temp_max": 5.13 + "temp": 5.53, + "feels_like": 5.53, + "pressure": 1022, + "humidity": 73, + "temp_min": 4.03, + "temp_max": 5.55 }, "wind": { "speed": 0.67, - "deg": 24 + "deg": 91, + "gust": 0.86 }, "clouds": { "all": 100 @@ -18676,19 +17642,19 @@ ] }, { - "dt": 1743152400, + "dt": 1745740800, "main": { - "temp": 5.48, - "feels_like": 5.48, - "pressure": 991, - "humidity": 85, - "temp_min": 5.48, - "temp_max": 5.48 + "temp": 6.6, + "feels_like": 6.6, + "pressure": 1021, + "humidity": 68, + "temp_min": 6.03, + "temp_max": 7.18 }, "wind": { - "speed": 1.2, - "deg": 317, - "gust": 0.68 + "speed": 0.5, + "deg": 83, + "gust": 0.95 }, "clouds": { "all": 100 @@ -18703,19 +17669,19 @@ ] }, { - "dt": 1743156000, + "dt": 1745744400, "main": { - "temp": 5.74, - "feels_like": 4.7, - "pressure": 991, - "humidity": 82, - "temp_min": 5.74, - "temp_max": 5.74 + "temp": 6.64, + "feels_like": 6.64, + "pressure": 1022, + "humidity": 72, + "temp_min": 6.62, + "temp_max": 7.03 }, "wind": { - "speed": 1.57, - "deg": 322, - "gust": 1.37 + "speed": 0.45, + "deg": 315, + "gust": 1.34 }, "clouds": { "all": 100 @@ -18730,19 +17696,19 @@ ] }, { - "dt": 1743159600, + "dt": 1745748000, "main": { - "temp": 5.87, - "feels_like": 5.87, - "pressure": 992, - "humidity": 83, - "temp_min": 5.87, - "temp_max": 5.87 + "temp": 7.71, + "feels_like": 7.71, + "pressure": 1021, + "humidity": 68, + "temp_min": 7.03, + "temp_max": 8.29 }, "wind": { - "speed": 0.87, - "deg": 278, - "gust": 1.07 + "speed": 0.45, + "deg": 293, + "gust": 0.89 }, "clouds": { "all": 100 @@ -18757,82 +17723,76 @@ ] }, { - "dt": 1743163200, + "dt": 1745751600, "main": { - "temp": 6.12, - "feels_like": 4.87, - "pressure": 993, - "humidity": 83, - "temp_min": 6.12, - "temp_max": 6.12 + "temp": 9.93, + "feels_like": 9.93, + "pressure": 1021, + "humidity": 61, + "temp_min": 8.03, + "temp_max": 10.51 }, "wind": { - "speed": 1.81, - "deg": 196, - "gust": 1.49 + "speed": 0.89, + "deg": 45, + "gust": 1.79 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, - "main": "Rain", - "description": "light rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 0.14 - } + ] }, { - "dt": 1743166800, + "dt": 1745755200, "main": { - "temp": 6.83, - "feels_like": 6.83, - "pressure": 993, - "humidity": 80, - "temp_min": 6.83, - "temp_max": 6.83 + "temp": 10.53, + "feels_like": 9.26, + "pressure": 1021, + "humidity": 62, + "temp_min": 9.03, + "temp_max": 10.55 }, "wind": { - "speed": 0.45, - "deg": 160, - "gust": 1.79 + "speed": 1.34, + "deg": 315, + "gust": 2.68 }, "clouds": { - "all": 89 + "all": 99 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.06 - } + ] }, { - "dt": 1743170400, + "dt": 1745758800, "main": { - "temp": 7.26, - "feels_like": 5.95, - "pressure": 994, - "humidity": 80, - "temp_min": 7.26, - "temp_max": 7.26 + "temp": 10.83, + "feels_like": 9.43, + "pressure": 1020, + "humidity": 56, + "temp_min": 9.03, + "temp_max": 11.11 }, "wind": { - "speed": 2.05, - "deg": 281, - "gust": 4.9 + "speed": 1.34, + "deg": 23, + "gust": 3.58 }, "clouds": { - "all": 94 + "all": 88 }, "weather": [ { @@ -18844,49 +17804,49 @@ ] }, { - "dt": 1743174000, + "dt": 1745762400, "main": { - "temp": 7.77, - "feels_like": 6.39, - "pressure": 994, - "humidity": 88, - "temp_min": 7.77, - "temp_max": 8.29 + "temp": 10.27, + "feels_like": 8.81, + "pressure": 1019, + "humidity": 56, + "temp_min": 9.03, + "temp_max": 10.55 }, "wind": { - "speed": 2.24, + "speed": 0.89, "deg": 23, - "gust": 4.02 + "gust": 1.79 }, "clouds": { - "all": 96 + "all": 84 }, "weather": [ { - "id": 804, + "id": 803, "main": "Clouds", - "description": "overcast clouds", + "description": "broken clouds", "icon": "04d" } ] }, { - "dt": 1743177600, + "dt": 1745766000, "main": { - "temp": 7.45, - "feels_like": 7.45, - "pressure": 995, - "humidity": 86, - "temp_min": 7.22, - "temp_max": 9.03 + "temp": 10.27, + "feels_like": 8.87, + "pressure": 1019, + "humidity": 58, + "temp_min": 9.03, + "temp_max": 10.55 }, "wind": { - "speed": 0.89, + "speed": 1.79, "deg": 23, - "gust": 1.79 + "gust": 4.02 }, "clouds": { - "all": 97 + "all": 89 }, "weather": [ { @@ -18898,22 +17858,22 @@ ] }, { - "dt": 1743181200, + "dt": 1745769600, "main": { - "temp": 7.71, - "feels_like": 6.52, - "pressure": 995, - "humidity": 85, - "temp_min": 7.22, - "temp_max": 8.29 + "temp": 9.71, + "feels_like": 9.71, + "pressure": 1019, + "humidity": 61, + "temp_min": 9.4, + "temp_max": 10.03 }, "wind": { - "speed": 2, - "deg": 87, - "gust": 1.87 + "speed": 0.45, + "deg": 315, + "gust": 1.79 }, "clouds": { - "all": 98 + "all": 92 }, "weather": [ { @@ -18925,46 +17885,76 @@ ] }, { - "dt": 1743184800, + "dt": 1745773200, "main": { - "temp": 6.89, - "feels_like": 4.99, - "pressure": 996, - "humidity": 87, - "temp_min": 6.66, - "temp_max": 8.03 + "temp": 9.42, + "feels_like": 9.42, + "pressure": 1018, + "humidity": 66, + "temp_min": 9.4, + "temp_max": 10.03 }, "wind": { - "speed": 2.7, - "deg": 112, - "gust": 2.75 + "speed": 0.45, + "deg": 45, + "gust": 1.34 }, "clouds": { - "all": 98 + "all": 94 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1743188400, + "dt": 1745776800, "main": { - "temp": 5.83, - "feels_like": 3.15, - "pressure": 996, - "humidity": 88, - "temp_min": 5.51, - "temp_max": 6.11 + "temp": 8.86, + "feels_like": 8.86, + "pressure": 1017, + "humidity": 68, + "temp_min": 8.84, + "temp_max": 10.03 }, "wind": { - "speed": 3.53, - "deg": 84, - "gust": 5.32 + "speed": 0.89, + "deg": 23, + "gust": 2.24 + }, + "clouds": { + "all": 95 + }, + "weather": [ + { + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" + } + ], + "rain": { + "1h": 1.15 + } + }, + { + "dt": 1745780400, + "main": { + "temp": 8, + "feels_like": 5.96, + "pressure": 1017, + "humidity": 72, + "temp_min": 7.77, + "temp_max": 9.03 + }, + "wind": { + "speed": 3.24, + "deg": 60, + "gust": 3.15 }, "clouds": { "all": 100 @@ -18974,78 +17964,84 @@ "id": 804, "main": "Clouds", "description": "overcast clouds", - "icon": "04n" + "icon": "04d" } ] }, { - "dt": 1743192000, + "dt": 1745784000, "main": { - "temp": 5.02, - "feels_like": 2.49, - "pressure": 997, - "humidity": 90, - "temp_min": 4.4, - "temp_max": 5.55 + "temp": 7.15, + "feels_like": 4.62, + "pressure": 1016, + "humidity": 81, + "temp_min": 6.66, + "temp_max": 9.03 }, "wind": { - "speed": 3.06, - "deg": 78, - "gust": 4.1 + "speed": 3.78, + "deg": 67, + "gust": 4.66 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 2.05 + } }, { - "dt": 1743195600, + "dt": 1745787600, "main": { - "temp": 4.71, - "feels_like": 2.07, - "pressure": 997, - "humidity": 92, - "temp_min": 4.03, - "temp_max": 4.99 + "temp": 6.62, + "feels_like": 4.64, + "pressure": 1016, + "humidity": 85, + "temp_min": 6.62, + "temp_max": 9.03 }, "wind": { - "speed": 3.12, - "deg": 61, - "gust": 3.95 + "speed": 2.73, + "deg": 53, + "gust": 3.64 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 4.21 + } }, { - "dt": 1743199200, + "dt": 1745791200, "main": { - "temp": 3.91, - "feels_like": 2.07, - "pressure": 998, - "humidity": 92, - "temp_min": 3.03, - "temp_max": 4.44 + "temp": 6.09, + "feels_like": 3.99, + "pressure": 1016, + "humidity": 91, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 2.03, - "deg": 35, - "gust": 3.61 + "speed": 2.76, + "deg": 40, + "gust": 3.17 }, "clouds": { "all": 100 @@ -19060,49 +18056,52 @@ ] }, { - "dt": 1743202800, + "dt": 1745794800, "main": { - "temp": 3.91, - "feels_like": 1.71, - "pressure": 998, + "temp": 6.09, + "feels_like": 4.06, + "pressure": 1015, "humidity": 92, - "temp_min": 3.03, - "temp_max": 4.44 + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 2.39, - "deg": 53, - "gust": 3.88 + "speed": 2.66, + "deg": 43, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 2.46 + } }, { - "dt": 1743206400, + "dt": 1745798400, "main": { - "temp": 3.91, - "feels_like": 3.91, - "pressure": 998, - "humidity": 92, - "temp_min": 3.03, - "temp_max": 4.44 + "temp": 5.78, + "feels_like": 3.99, + "pressure": 1015, + "humidity": 93, + "temp_min": 5.55, + "temp_max": 7.03 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.34 + "speed": 2.31, + "deg": 69, + "gust": 2.5 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { @@ -19114,19 +18113,19 @@ ] }, { - "dt": 1743210000, + "dt": 1745802000, "main": { - "temp": 3.09, - "feels_like": 1.4, - "pressure": 998, + "temp": 5.53, + "feels_like": 5.53, + "pressure": 1015, "humidity": 93, - "temp_min": 2.18, - "temp_max": 3.88 + "temp_min": 5.51, + "temp_max": 7.03 }, "wind": { - "speed": 1.78, - "deg": 93, - "gust": 2.98 + "speed": 0.51, + "deg": 37, + "gust": 0.36 }, "clouds": { "all": 100 @@ -19141,325 +18140,352 @@ ] }, { - "dt": 1743213600, + "dt": 1745805600, "main": { - "temp": 2.29, - "feels_like": 0.73, - "pressure": 998, + "temp": 5.27, + "feels_like": 3.94, + "pressure": 1014, "humidity": 93, - "temp_min": 1.07, - "temp_max": 3.33 + "temp_min": 4.95, + "temp_max": 6.03 }, "wind": { - "speed": 1.59, + "speed": 1.76, "deg": 106, - "gust": 2.53 + "gust": 1.92 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.41 + } }, { - "dt": 1743217200, + "dt": 1745809200, "main": { - "temp": 2.03, - "feels_like": 0.74, - "pressure": 997, + "temp": 5.53, + "feels_like": 5.53, + "pressure": 1013, "humidity": 94, - "temp_min": 0.51, - "temp_max": 3.33 + "temp_min": 5.51, + "temp_max": 6.03 }, "wind": { - "speed": 1.38, - "deg": 96, - "gust": 1.93 + "speed": 1.04, + "deg": 76, + "gust": 1.14 }, "clouds": { - "all": 95 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 3.16 + } }, { - "dt": 1743220800, + "dt": 1745812800, "main": { - "temp": 1.47, - "feels_like": -1.21, - "pressure": 997, - "humidity": 90, - "temp_min": -0.05, - "temp_max": 2.77 + "temp": 5.83, + "feels_like": 5.83, + "pressure": 1012, + "humidity": 95, + "temp_min": 5.51, + "temp_max": 6.11 }, "wind": { - "speed": 2.43, - "deg": 82, - "gust": 3.16 + "speed": 0.48, + "deg": 84, + "gust": 0.72 }, "clouds": { - "all": 89 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 4.21 + } }, { - "dt": 1743224400, + "dt": 1745816400, "main": { - "temp": 1.47, - "feels_like": -1.13, - "pressure": 997, - "humidity": 89, - "temp_min": -0.05, - "temp_max": 2.77 + "temp": 5.83, + "feels_like": 5.83, + "pressure": 1011, + "humidity": 95, + "temp_min": 5.51, + "temp_max": 6.11 }, "wind": { - "speed": 2.35, - "deg": 66, - "gust": 2.92 + "speed": 1.29, + "deg": 38, + "gust": 1.56 }, "clouds": { - "all": 77 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 2.05 + } }, { - "dt": 1743228000, + "dt": 1745820000, "main": { - "temp": 2.03, - "feels_like": 0.29, - "pressure": 998, - "humidity": 91, - "temp_min": 0.51, - "temp_max": 3.33 + "temp": 6.38, + "feels_like": 4.53, + "pressure": 1010, + "humidity": 95, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 1.69, - "deg": 80, - "gust": 2.64 + "speed": 2.51, + "deg": 55, + "gust": 2.79 }, "clouds": { - "all": 80 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 2.25 + } }, { - "dt": 1743231600, + "dt": 1745823600, "main": { - "temp": 2.8, - "feels_like": 2.8, - "pressure": 998, - "humidity": 92, - "temp_min": 2.03, - "temp_max": 3.33 + "temp": 6.38, + "feels_like": 5.45, + "pressure": 1009, + "humidity": 95, + "temp_min": 6.07, + "temp_max": 7.03 }, "wind": { - "speed": 0.45, - "deg": 135, - "gust": 1.79 + "speed": 1.56, + "deg": 57, + "gust": 2.73 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10d" } ], "rain": { - "1h": 0.38 + "1h": 6.48 } }, - { - "dt": 1743235200, - "main": { - "temp": 4.2, - "feels_like": 2.93, - "pressure": 999, - "humidity": 88, - "temp_min": 3.29, - "temp_max": 4.99 + { + "dt": 1745827200, + "main": { + "temp": 7.24, + "feels_like": 7.24, + "pressure": 1009, + "humidity": 96, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 1.58, - "deg": 65, - "gust": 1.4 + "speed": 0.45, + "deg": 225, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10d" } ], "rain": { - "1h": 0.42 + "1h": 4.21 } }, { - "dt": 1743238800, + "dt": 1745830800, "main": { - "temp": 4.42, - "feels_like": 4.42, - "pressure": 1000, - "humidity": 92, - "temp_min": 4.4, - "temp_max": 6.03 + "temp": 7.2, + "feels_like": 6.44, + "pressure": 1009, + "humidity": 95, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 0.74, - "deg": 35, - "gust": 0.6 + "speed": 1.51, + "deg": 316, + "gust": 1.84 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 6.48 + } }, { - "dt": 1743242400, + "dt": 1745834400, "main": { - "temp": 5.83, - "feels_like": 5.83, - "pressure": 1000, - "humidity": 86, - "temp_min": 5.51, - "temp_max": 7.03 + "temp": 8.05, + "feels_like": 8.05, + "pressure": 1010, + "humidity": 96, + "temp_min": 7.73, + "temp_max": 8.33 }, "wind": { - "speed": 0.92, - "deg": 43, - "gust": 0.78 + "speed": 0.45, + "deg": 203, + "gust": 1.34 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 4.21 + } }, { - "dt": 1743246000, + "dt": 1745838000, "main": { - "temp": 6.64, - "feels_like": 6.64, - "pressure": 1001, - "humidity": 83, - "temp_min": 6.62, - "temp_max": 8.03 + "temp": 8.86, + "feels_like": 8.86, + "pressure": 1011, + "humidity": 95, + "temp_min": 8.84, + "temp_max": 10.03 }, "wind": { - "speed": 1.31, - "deg": 71, - "gust": 1.31 + "speed": 0.89, + "deg": 135, + "gust": 2.68 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.3 + } }, { - "dt": 1743249600, + "dt": 1745841600, "main": { - "temp": 6.85, - "feels_like": 6.85, - "pressure": 1001, - "humidity": 83, - "temp_min": 6.11, - "temp_max": 8.03 + "temp": 8.31, + "feels_like": 7.91, + "pressure": 1012, + "humidity": 93, + "temp_min": 8.29, + "temp_max": 9.03 }, "wind": { - "speed": 0.45, - "deg": 315, - "gust": 1.79 + "speed": 1.34, + "deg": 293, + "gust": 3.13 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 2.73 + } }, { - "dt": 1743253200, + "dt": 1745845200, "main": { - "temp": 6.11, - "feels_like": 6.11, - "pressure": 1001, - "humidity": 87, - "temp_min": 6.11, - "temp_max": 6.62 + "temp": 8.05, + "feels_like": 7.62, + "pressure": 1012, + "humidity": 91, + "temp_min": 7.73, + "temp_max": 8.33 }, "wind": { - "speed": 0.89, - "deg": 338, - "gust": 1.79 + "speed": 1.34, + "deg": 225, + "gust": 3.58 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { @@ -19470,26 +18496,26 @@ } ], "rain": { - "1h": 0.78 + "1h": 0.25 } }, { - "dt": 1743256800, + "dt": 1745848800, "main": { - "temp": 8.05, - "feels_like": 8.05, - "pressure": 1002, - "humidity": 75, - "temp_min": 7.73, + "temp": 8.31, + "feels_like": 8.31, + "pressure": 1012, + "humidity": 90, + "temp_min": 8.03, "temp_max": 8.33 }, "wind": { "speed": 0.89, - "deg": 217, - "gust": 4.02 + "deg": 203, + "gust": 2.24 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { @@ -19501,22 +18527,22 @@ ] }, { - "dt": 1743260400, + "dt": 1745852400, "main": { - "temp": 8.56, - "feels_like": 8.19, - "pressure": 1002, - "humidity": 64, - "temp_min": 8.33, - "temp_max": 9.03 + "temp": 9.42, + "feels_like": 9.17, + "pressure": 1011, + "humidity": 84, + "temp_min": 9.03, + "temp_max": 9.44 }, "wind": { "speed": 1.34, - "deg": 225, - "gust": 5.36 + "deg": 248, + "gust": 3.58 }, "clouds": { - "all": 100 + "all": 89 }, "weather": [ { @@ -19528,130 +18554,172 @@ ] }, { - "dt": 1743264000, + "dt": 1745856000, "main": { - "temp": 8.31, - "feels_like": 6.69, - "pressure": 1002, - "humidity": 67, - "temp_min": 8.29, + "temp": 8.86, + "feels_like": 8.05, + "pressure": 1012, + "humidity": 87, + "temp_min": 8.84, "temp_max": 9.03 }, "wind": { - "speed": 2.68, - "deg": 203, - "gust": 7.15 + "speed": 1.79, + "deg": 225, + "gust": 3.58 }, "clouds": { - "all": 99 + "all": 90 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 2.51 + } }, { - "dt": 1743267600, + "dt": 1745859600, "main": { - "temp": 6.89, - "feels_like": 5, - "pressure": 1002, - "humidity": 71, - "temp_min": 6.66, - "temp_max": 9.03 + "temp": 8.31, + "feels_like": 7.91, + "pressure": 1012, + "humidity": 90, + "temp_min": 8.03, + "temp_max": 8.33 }, "wind": { - "speed": 2.68, - "deg": 225, - "gust": 7.6 + "speed": 1.34, + "deg": 248, + "gust": 4.02 }, "clouds": { - "all": 99 + "all": 92 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10d" + } + ], + "rain": { + "1h": 6.48 + } + }, + { + "dt": 1745863200, + "main": { + "temp": 8.05, + "feels_like": 7.12, + "pressure": 1012, + "humidity": 92, + "temp_min": 7.73, + "temp_max": 8.33 + }, + "wind": { + "speed": 1.79, + "deg": 248, + "gust": 6.26 + }, + "clouds": { + "all": 94 + }, + "weather": [ + { + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.92 + } }, { - "dt": 1743271200, + "dt": 1745866800, "main": { - "temp": 6.09, - "feels_like": 4.41, - "pressure": 1003, - "humidity": 74, - "temp_min": 6.07, - "temp_max": 8.03 + "temp": 8.05, + "feels_like": 7.62, + "pressure": 1013, + "humidity": 92, + "temp_min": 7.73, + "temp_max": 9.03 }, "wind": { - "speed": 2.24, + "speed": 1.34, "deg": 225, - "gust": 5.36 + "gust": 4.02 }, "clouds": { - "all": 99 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 1.23 + } }, { - "dt": 1743274800, + "dt": 1745870400, "main": { - "temp": 4.97, - "feels_like": 3.56, - "pressure": 1003, - "humidity": 78, - "temp_min": 4.95, - "temp_max": 7.03 + "temp": 7.75, + "feels_like": 6.77, + "pressure": 1013, + "humidity": 92, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { "speed": 1.79, - "deg": 225, - "gust": 4.92 + "deg": 270, + "gust": 4.02 }, "clouds": { - "all": 95 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.23 + } }, { - "dt": 1743278400, + "dt": 1745874000, "main": { - "temp": 4.97, - "feels_like": 4.13, - "pressure": 1003, - "humidity": 79, - "temp_min": 4.95, - "temp_max": 6.03 + "temp": 7.75, + "feels_like": 7.75, + "pressure": 1014, + "humidity": 93, + "temp_min": 7.73, + "temp_max": 8.03 }, "wind": { - "speed": 1.34, - "deg": 203, - "gust": 4.02 + "speed": 0.89, + "deg": 269, + "gust": 3.13 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { @@ -19663,22 +18731,22 @@ ] }, { - "dt": 1743282000, + "dt": 1745877600, "main": { - "temp": 3.56, - "feels_like": 3.56, - "pressure": 1003, - "humidity": 80, - "temp_min": 3.33, - "temp_max": 6.03 + "temp": 7.45, + "feels_like": 6.01, + "pressure": 1015, + "humidity": 92, + "temp_min": 7.22, + "temp_max": 8.03 }, "wind": { - "speed": 0.45, - "deg": 225, - "gust": 3.58 + "speed": 2.24, + "deg": 248, + "gust": 6.26 }, "clouds": { - "all": 96 + "all": 100 }, "weather": [ { @@ -19690,345 +18758,378 @@ ] }, { - "dt": 1743285600, + "dt": 1745881200, "main": { - "temp": 2.75, - "feels_like": -0.44, - "pressure": 1003, - "humidity": 84, - "temp_min": 2.73, - "temp_max": 5.03 + "temp": 7.2, + "feels_like": 5.06, + "pressure": 1016, + "humidity": 93, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 3.32, - "deg": 242, - "gust": 3.97 + "speed": 3.13, + "deg": 270, + "gust": 5.81 }, "clouds": { - "all": 96 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.18 + } }, { - "dt": 1743289200, + "dt": 1745884800, "main": { - "temp": 1.94, - "feels_like": -0.74, - "pressure": 1003, - "humidity": 87, - "temp_min": 1.62, - "temp_max": 3.03 + "temp": 7.2, + "feels_like": 7.2, + "pressure": 1016, + "humidity": 94, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 2.52, - "deg": 205, - "gust": 3.06 + "speed": 0.89, + "deg": 110, + "gust": 4.47 }, "clouds": { - "all": 97 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.12 + } }, { - "dt": 1743292800, + "dt": 1745888400, "main": { - "temp": 1.38, - "feels_like": 0.06, - "pressure": 1003, - "humidity": 88, - "temp_min": 1.07, - "temp_max": 2.03 + "temp": 6.94, + "feels_like": 6.94, + "pressure": 1017, + "humidity": 94, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 1.35, - "deg": 213, - "gust": 1.42 + "speed": 0.45, + "deg": 180, + "gust": 1.34 }, "clouds": { - "all": 97 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 2.05 + } }, { - "dt": 1743296400, + "dt": 1745892000, "main": { - "temp": 1.43, - "feels_like": -0.37, - "pressure": 1002, - "humidity": 88, - "temp_min": 0.51, - "temp_max": 2.22 + "temp": 6.64, + "feels_like": 5.49, + "pressure": 1017, + "humidity": 94, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 1.67, - "deg": 216, - "gust": 1.77 + "speed": 1.79, + "deg": 270, + "gust": 4.02 }, "clouds": { - "all": 87 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 1.87 + } }, { - "dt": 1743300000, + "dt": 1745895600, "main": { - "temp": 1.43, - "feels_like": 1.43, - "pressure": 1002, - "humidity": 88, - "temp_min": 0.51, - "temp_max": 2.22 + "temp": 6.64, + "feels_like": 6.02, + "pressure": 1018, + "humidity": 94, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 0.79, - "deg": 221, - "gust": 0.86 + "speed": 1.34, + "deg": 270, + "gust": 3.58 }, "clouds": { - "all": 93 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.73 + } }, { - "dt": 1743303600, + "dt": 1745899200, "main": { - "temp": 1.73, - "feels_like": 1.73, - "pressure": 1002, - "humidity": 88, - "temp_min": 0.51, - "temp_max": 2.77 + "temp": 6.64, + "feels_like": 6.64, + "pressure": 1018, + "humidity": 94, + "temp_min": 6.62, + "temp_max": 8.03 }, "wind": { - "speed": 0.65, - "deg": 19, - "gust": 0.71 + "speed": 0.45, + "deg": 70, + "gust": 2.24 }, "clouds": { - "all": 96 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 4.86 + } }, { - "dt": 1743307200, + "dt": 1745902800, "main": { - "temp": 1.43, - "feels_like": 1.43, - "pressure": 1002, - "humidity": 89, - "temp_min": 0.51, - "temp_max": 2.22 + "temp": 6.64, + "feels_like": 6.02, + "pressure": 1019, + "humidity": 95, + "temp_min": 6.62, + "temp_max": 7.03 }, "wind": { - "speed": 1.23, - "deg": 49, - "gust": 1.3 + "speed": 1.34, + "deg": 225, + "gust": 4.02 }, "clouds": { - "all": 97 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.22 + } }, { - "dt": 1743310800, + "dt": 1745906400, "main": { - "temp": 1.73, - "feels_like": -0.14, - "pressure": 1002, - "humidity": 89, - "temp_min": 0.51, - "temp_max": 2.77 + "temp": 6.94, + "feels_like": 6.94, + "pressure": 1020, + "humidity": 95, + "temp_min": 6.62, + "temp_max": 7.22 }, "wind": { - "speed": 1.76, - "deg": 41, - "gust": 1.77 + "speed": 0.89, + "deg": 315, + "gust": 2.24 }, "clouds": { - "all": 97 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 0.33 + } }, { - "dt": 1743314400, + "dt": 1745910000, "main": { - "temp": 1.69, - "feels_like": -0.85, - "pressure": 1003, - "humidity": 90, - "temp_min": 1.07, - "temp_max": 2.22 + "temp": 7.2, + "feels_like": 7.2, + "pressure": 1020, + "humidity": 94, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 2.33, - "deg": 41, - "gust": 2.68 + "speed": 0.89, + "deg": 248, + "gust": 3.58 }, "clouds": { - "all": 98 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 3.65 + } }, { - "dt": 1743318000, + "dt": 1745913600, "main": { - "temp": 2.24, - "feels_like": -0.54, - "pressure": 1003, - "humidity": 90, - "temp_min": 1.62, - "temp_max": 2.77 + "temp": 7.2, + "feels_like": 6.66, + "pressure": 1020, + "humidity": 94, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 2.68, - "deg": 42, - "gust": 3.42 + "speed": 1.34, + "deg": 270, + "gust": 3.13 }, "clouds": { - "all": 100 + "all": 99 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 501, + "main": "Rain", + "description": "moderate rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 2.38 + } }, { - "dt": 1743321600, + "dt": 1745917200, "main": { - "temp": 3.35, - "feels_like": 1.8, - "pressure": 1004, - "humidity": 90, - "temp_min": 2.73, - "temp_max": 3.88 + "temp": 7.2, + "feels_like": 7.2, + "pressure": 1020, + "humidity": 93, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { - "speed": 1.7, - "deg": 42, - "gust": 2.15 + "speed": 0.45, + "deg": 258, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10d" } ], "rain": { - "1h": 0.12 + "1h": 7.72 } }, { - "dt": 1743325200, + "dt": 1745920800, "main": { - "temp": 4.16, - "feels_like": 2.72, - "pressure": 1005, - "humidity": 89, - "temp_min": 3.84, - "temp_max": 4.44 + "temp": 7.2, + "feels_like": 7.2, + "pressure": 1020, + "humidity": 93, + "temp_min": 7.18, + "temp_max": 9.03 }, "wind": { - "speed": 1.71, - "deg": 53, - "gust": 2.09 + "speed": 0.89, + "deg": 225, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10d" } - ] + ], + "rain": { + "1h": 5.51 + } }, { - "dt": 1743328800, + "dt": 1745924400, "main": { - "temp": 4.67, - "feels_like": 4.67, - "pressure": 1006, - "humidity": 88, - "temp_min": 4.44, - "temp_max": 5.03 + "temp": 7.2, + "feels_like": 7.2, + "pressure": 1020, + "humidity": 93, + "temp_min": 7.18, + "temp_max": 8.03 }, "wind": { "speed": 0.89, - "deg": 315, + "deg": 248, "gust": 1.79 }, "clouds": { @@ -20036,89 +19137,113 @@ }, "weather": [ { - "id": 500, + "id": 501, "main": "Rain", - "description": "light rain", + "description": "moderate rain", "icon": "10d" } ], "rain": { - "1h": 0.12 + "1h": 1.46 } }, { - "dt": 1743332400, + "dt": 1745928000, "main": { - "temp": 4.97, - "feels_like": 4.97, - "pressure": 1007, - "humidity": 87, - "temp_min": 4.95, - "temp_max": 5.03 + "temp": 7.71, + "feels_like": 7.71, + "pressure": 1020, + "humidity": 91, + "temp_min": 7.22, + "temp_max": 9.03 }, "wind": { "speed": 0.45, - "deg": 315, - "gust": 1.79 + "deg": 335, + "gust": 2.68 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 501, "main": "Rain", - "description": "light rain", + "description": "moderate rain", "icon": "10d" } ], "rain": { - "1h": 0.24 + "1h": 1.27 } }, { - "dt": 1743336000, + "dt": 1745931600, "main": { - "temp": 4.71, - "feels_like": 4.71, - "pressure": 1008, - "humidity": 88, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 9.11, + "feels_like": 9.11, + "pressure": 1020, + "humidity": 85, + "temp_min": 8.88, + "temp_max": 10.03 }, "wind": { - "speed": 0.45, - "deg": 293, - "gust": 1.34 + "speed": 0.89, + "deg": 180, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 501, - "main": "Rain", - "description": "moderate rain", - "icon": "10d" + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" } - ], - "rain": { - "1h": 1.33 - } + ] + }, + { + "dt": 1745935200, + "main": { + "temp": 9.11, + "feels_like": 9.11, + "pressure": 1020, + "humidity": 83, + "temp_min": 8.88, + "temp_max": 10.03 + }, + "wind": { + "speed": 0.89, + "deg": 225, + "gust": 2.68 + }, + "clouds": { + "all": 100 + }, + "weather": [ + { + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" + } + ] }, { - "dt": 1743339600, + "dt": 1745938800, "main": { - "temp": 4.16, - "feels_like": 4.16, - "pressure": 1009, - "humidity": 89, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 7.96, + "feels_like": 7.96, + "pressure": 1019, + "humidity": 86, + "temp_min": 7.22, + "temp_max": 11.03 }, "wind": { "speed": 0.45, - "deg": 315, + "deg": 180, "gust": 1.34 }, "clouds": { @@ -20126,30 +19251,30 @@ }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10d" } ], "rain": { - "1h": 0.3 + "1h": 7.72 } }, { - "dt": 1743343200, + "dt": 1745942400, "main": { - "temp": 4.42, - "feels_like": 4.42, - "pressure": 1010, - "humidity": 89, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 7.22, + "feels_like": 7.22, + "pressure": 1018, + "humidity": 93, + "temp_min": 6.62, + "temp_max": 7.22 }, "wind": { "speed": 0.45, - "deg": 270, - "gust": 1.79 + "deg": 135, + "gust": 1.34 }, "clouds": { "all": 100 @@ -20163,263 +19288,248 @@ } ], "rain": { - "1h": 0.3 + "1h": 0.64 } }, { - "dt": 1743346800, + "dt": 1745946000, "main": { - "temp": 4.71, - "feels_like": 4.71, - "pressure": 1011, - "humidity": 86, - "temp_min": 4.4, - "temp_max": 5.03 + "temp": 6.89, + "feels_like": 4.94, + "pressure": 1018, + "humidity": 93, + "temp_min": 6.66, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 315, - "gust": 1.79 + "speed": 2.76, + "deg": 268, + "gust": 4.98 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10d" } ], "rain": { - "1h": 0.75 + "1h": 4.47 } }, { - "dt": 1743350400, + "dt": 1745949600, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1012, - "humidity": 89, - "temp_min": 3.84, - "temp_max": 5.03 + "temp": 6.34, + "feels_like": 6.34, + "pressure": 1017, + "humidity": 93, + "temp_min": 6.11, + "temp_max": 8.03 }, "wind": { - "speed": 0.89, - "deg": 293, - "gust": 2.68 + "speed": 0.45, + "deg": 180, + "gust": 2.24 }, "clouds": { "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10d" } ], "rain": { - "1h": 0.69 + "1h": 6.48 } }, { - "dt": 1743354000, + "dt": 1745953200, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1013, - "humidity": 89, - "temp_min": 3.84, - "temp_max": 4.03 + "temp": 5.78, + "feels_like": 3.49, + "pressure": 1017, + "humidity": 93, + "temp_min": 5.55, + "temp_max": 7.03 }, "wind": { - "speed": 0.45, - "deg": 315, - "gust": 1.79 + "speed": 2.94, + "deg": 290, + "gust": 5.54 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04d" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10d" } ], "rain": { - "1h": 0.1 + "1h": 4.49 } }, { - "dt": 1743357600, + "dt": 1745956800, "main": { - "temp": 3.86, - "feels_like": 3.86, - "pressure": 1014, - "humidity": 89, - "temp_min": 3.84, - "temp_max": 4.03 + "temp": 5.53, + "feels_like": 3.31, + "pressure": 1017, + "humidity": 93, + "temp_min": 5.51, + "temp_max": 7.03 }, "wind": { - "speed": 0.45, - "deg": 135, - "gust": 1.34 + "speed": 2.77, + "deg": 269, + "gust": 8.66 }, "clouds": { - "all": 92 + "all": 100 }, "weather": [ { - "id": 500, + "id": 502, "main": "Rain", - "description": "light rain", + "description": "heavy intensity rain", "icon": "10n" } ], "rain": { - "1h": 0.39 + "1h": 4.6 } }, { - "dt": 1743361200, + "dt": 1745960400, "main": { - "temp": 2.45, - "feels_like": 2.45, - "pressure": 1016, - "humidity": 91, - "temp_min": 2.22, - "temp_max": 4.03 + "temp": 4.93, + "feels_like": 4.93, + "pressure": 1017, + "humidity": 93, + "temp_min": 4.44, + "temp_max": 6.03 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.34 + "speed": 0.89, + "deg": 225, + "gust": 1.79 }, "clouds": { "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 502, + "main": "Rain", + "description": "heavy intensity rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 5.62 + } }, { - "dt": 1743364800, + "dt": 1745964000, "main": { - "temp": 1.89, - "feels_like": 1.89, + "temp": 4.11, + "feels_like": 0.22, "pressure": 1017, - "humidity": 91, - "temp_min": 1.66, - "temp_max": 3.03 + "humidity": 93, + "temp_min": 3.88, + "temp_max": 6.03 }, "wind": { - "speed": 0.45, - "deg": 158, - "gust": 1.79 + "speed": 5, + "deg": 232, + "gust": 9.57 }, "clouds": { - "all": 96 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.75 + } }, { - "dt": 1743368400, + "dt": 1745967600, "main": { - "temp": 1.09, - "feels_like": -2.87, + "temp": 4.42, + "feels_like": 0.19, "pressure": 1017, - "humidity": 92, - "temp_min": 1.07, - "temp_max": 2.03 + "humidity": 94, + "temp_min": 4.4, + "temp_max": 5.03 }, "wind": { - "speed": 3.89, - "deg": 229, - "gust": 5.17 + "speed": 5.93, + "deg": 241, + "gust": 11.17 }, "clouds": { - "all": 89 + "all": 100 }, "weather": [ { - "id": 804, - "main": "Clouds", - "description": "overcast clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.12 + } }, { - "dt": 1743372000, + "dt": 1745971200, "main": { - "temp": 0.53, - "feels_like": 0.53, + "temp": 4.44, + "feels_like": 4.44, "pressure": 1018, - "humidity": 93, - "temp_min": 0.51, - "temp_max": 1.03 + "humidity": 95, + "temp_min": 4.4, + "temp_max": 4.44 }, "wind": { "speed": 0.89, - "deg": 135, + "deg": 203, "gust": 2.24 }, "clouds": { - "all": 79 - }, - "weather": [ - { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04n" - } - ] - }, - { - "dt": 1743375600, - "main": { - "temp": 0.53, - "feels_like": 0.53, - "pressure": 1019, - "humidity": 93, - "temp_min": 0.51, - "temp_max": 1.03 - }, - "wind": { - "speed": 0.89, - "deg": 158, - "gust": 2.68 - }, - "clouds": { - "all": 68 + "all": 100 }, "weather": [ { - "id": 803, - "main": "Clouds", - "description": "broken clouds", - "icon": "04n" + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10n" } - ] + ], + "rain": { + "1h": 0.31 + } } ] } \ No newline at end of file diff --git a/notebooks/notebook_regression.ipynb b/notebooks/notebook_regression.ipynb index 4bd9c08..fbf0c38 100644 --- a/notebooks/notebook_regression.ipynb +++ b/notebooks/notebook_regression.ipynb @@ -17,7 +17,7 @@ "source": [ "### Lese fra testdata fil\n", "I `data/test` mappen finner vi forhåndsdefinerte dataer som:\n", - "- `merged_data_mars.json` data hentet fra Trondheim, Mars måned 2025. \n", + "- `merged_data_april.json` data hentet fra Trondheim, april måned 2025. \n", "- `merged_data_2024_mai_2025.json` data hentet fra Trondheim, fra mai 2024 til mai 2025.\n", "\n", "Du kan endre hvilken fil du vil hente data fra ved å kommentere ut filepath." @@ -42,8 +42,8 @@ "# Data for et helt år\n", "# filepath = '../data/test/merged_data_2024_mai_2025.json'\n", "\n", - "# Data for mars måned 2025\n", - "filepath = '../data/test/merged_data_mars.json'\n", + "# Data for april måned 2025\n", + "filepath = '../data/test/merged_data_april.json'\n", "\n", "# Reads from file using pandas\n", "weather_data = pd.read_json(filepath)\n", From e37df080eeb46227a98f1cbcbd414ece9c64700f Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 11:09:49 +0200 Subject: [PATCH 15/21] move refleksjonsnotat to a markdown file in /docs --- README.md | 20 +------------------- docs/refleksjonsnotat.md | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 19 deletions(-) create mode 100644 docs/refleksjonsnotat.md diff --git a/README.md b/README.md index 51b95a5..00de46d 100644 --- a/README.md +++ b/README.md @@ -175,22 +175,4 @@ Visualiseringen finner man i notebook-ene. Vi har identifisert manglende data og ##### Skriv en kort evaluering av de utviklede visualiseringene. Diskuter hvilke visualiseringer som var mest effektive for å formidle informasjon, og hvorfor. Reflekter over tilbakemeldinger fra medstudenter eller veileder. -Linjegrafene viste seg å være de mest effektive når det gjaldt å formidle utvikling over tid, spesielt for å identifisere trender og mønstre i dataene. Kombinasjonen av tydelige akser, fargebruk og merking av nøkkelpunkter gjorde det enkelt å tolke informasjonen raskt. I tillegg fungerte kombinasjonsgrafene (linjediagram og stolpediagram) godt for å sammenligne flere dataserier parallelt, som f.eks. temperatur og nedbør. - - -#### Oppgave 7 - Refleksjonsnotat -Det vi har lært om datainnsamling, databehandling og dataanalyse, visualisering gjennom dette prosjektet er at det krever en del arbeid og kan være frustrerende, men når man får det til så er det en utrolig mestringsfølelse og en veldig oversiktlig og informativ representasjon av datainnsamlingene. Visualiseringen av dataen var mest givende fordi vi fikk tydelig se at databehandlingen og datarenskingen ga resultater og et fint layout. - -Vi har hatt noe koding med Pythons-bibliotekene Pandas, NumPy og Matplotlib fra emne TDT4111 forrige semester. Men gjennom dette emne og denne oppgaven har vi blitt tryggere på alle tre, spesielt Pandas. Vi har også blitt kjent med et nytt bibliotek, Scikit-learn og fått nye ferdigheter til hvordan å bruke dette til å gjøre lineær regresjon. - -Når vi først skulle komme i gang med prosjektet møtte vi på en del hindringer og komplikasjoner ved GitHub og API. Vi støtte på et problem etter å ha klonet repoet inn i en mappe i OneDrive, når vi skulle begynne å pushe og pulle. Etter flere feilmeldinger og forsøk på å løse dette, prøvde vi å flytte mappen fra OneDrive til direkte på datamaskinen og da løste det seg. Ellers har det noen ganger dukket opp feilmeldinger når vi har manglet biblioteker eller de har trengt å oppdatere seg, men disse små hindrene løste vi fort ved å installere `requirements.txt` på nytt. - -Sammarbeidet i gruppen har gått bra. Når vi har møtt på hindre har vi vært flinke til å hjelpe hverandre og løse de sammen. Vi har møttes jevnlig, jobbet sammen og fordelt oppgaver oss i mellom frem til neste møte. Hanne har hatt noen problemer med GitHub, så noen av løsningene har vært å sende tekst til README.md filer på mail. Ikke en optimal løsning, men vi fikk det bedre til tilslutt med en del pull og merge request. - -Kvaliteten på dataene våre mener vi er gode ettersom vi har en API som man trenger å lage bruker for (gratis) og har utrolig mye data for mange mange år og mange steder. Vi mener dette styrker troverdigheten og legitimiteten til dataene våre. Vi har fått laget mange diagrammer og mange Jupyter Notebooks som gjør at brukeren kan velge fra forskjellige perioder og steder de ønsker informasjon om værforhold fra. Grafene er lett lesbare og har realistisk data noe vi mener styrker kvaliteten på dataene våre. Ettersom dataene fra API-en vår er i kelvin og ikke celsius har det noen steder vært litt komplikasjoner med riktig temperatur, noe som gjerne svekker kvaliteten litt. - -For videre forskning kunne vi utviklet kodene våre til å gi brukeren valget om å velge byer utenfor Norge. Vi har i dette prosjektet begrenset til Norge, så å ha muligheten til å sjekke byer i hele verden ville vært et bra og naturlig steg videre i forskningen. - -Det vi mener er noen av de viktigste læringspunktene er at vi har fått blitt bedre kjent med biblioteker og fått god øving på å programmere og jobbe i gruppe. Med store datamengder av været kan man sammenligne værforhold i dag og mange år tilbake og se på forskjellene. Da kan man prøve å se det i miljøaspekt og det kunne også vært interessante forhold å se på videre. Våre værdata i sammenheng med miljø og klima utviklingen gjennom årene. Andre viktige læringspunkter vi har fått bedre forståelse for er iteratorer og list-comprehensions, enhetstesting, kunne håndtere data lagring, feil og filbehandlinger. - -Vi tror at å ha erfaringene vi har lært om Pythons generelt, VS-Code, Jupyter Notebooks vil komme godt med i arbeidslivet dersom man finner en jobb innenfor programmerings område. Samtidig som de grunnleggende programmeringsferdighetene vil komme godt med, vil det at vi har jobbet mye med statistikk og grafer gjøre at vi har en bedre forståelse av de områdene noe som man vil trenge videre i studie og i en eventuell jobb. Det at vi har jobbet i grupper har også en positiv påvirkning ved at vi lærer og samarbeidet og kommunisere med andre. \ No newline at end of file +Linjegrafene viste seg å være de mest effektive når det gjaldt å formidle utvikling over tid, spesielt for å identifisere trender og mønstre i dataene. Kombinasjonen av tydelige akser, fargebruk og merking av nøkkelpunkter gjorde det enkelt å tolke informasjonen raskt. I tillegg fungerte kombinasjonsgrafene (linjediagram og stolpediagram) godt for å sammenligne flere dataserier parallelt, som f.eks. temperatur og nedbør. \ No newline at end of file diff --git a/docs/refleksjonsnotat.md b/docs/refleksjonsnotat.md new file mode 100644 index 0000000..790d8c7 --- /dev/null +++ b/docs/refleksjonsnotat.md @@ -0,0 +1,16 @@ +#### Oppgave 7 - Refleksjonsnotat +Det vi har lært om datainnsamling, databehandling og dataanalyse, visualisering gjennom dette prosjektet er at det krever en del arbeid og kan være frustrerende, men når man får det til så er det en utrolig mestringsfølelse og en veldig oversiktlig og informativ representasjon av datainnsamlingene. Visualiseringen av dataen var mest givende fordi vi fikk tydelig se at databehandlingen og datarenskingen ga resultater og et fint layout. + +Vi har hatt noe koding med Pythons-bibliotekene Pandas, NumPy og Matplotlib fra emne TDT4111 forrige semester. Men gjennom dette emne og denne oppgaven har vi blitt tryggere på alle tre, spesielt Pandas. Vi har også blitt kjent med et nytt bibliotek, Scikit-learn og fått nye ferdigheter til hvordan å bruke dette til å gjøre lineær regresjon. + +Når vi først skulle komme i gang med prosjektet møtte vi på en del hindringer og komplikasjoner ved GitHub og API. Vi støtte på et problem etter å ha klonet repoet inn i en mappe i OneDrive, når vi skulle begynne å pushe og pulle. Etter flere feilmeldinger og forsøk på å løse dette, prøvde vi å flytte mappen fra OneDrive til direkte på datamaskinen og da løste det seg. Ellers har det noen ganger dukket opp feilmeldinger når vi har manglet biblioteker eller de har trengt å oppdatere seg, men disse små hindrene løste vi fort ved å installere `requirements.txt` på nytt. + +Sammarbeidet i gruppen har gått bra. Når vi har møtt på hindre har vi vært flinke til å hjelpe hverandre og løse de sammen. Vi har møttes jevnlig, jobbet sammen og fordelt oppgaver oss i mellom frem til neste møte. Hanne har hatt noen problemer med GitHub, så noen av løsningene har vært å sende tekst til README.md filer på mail. Ikke en optimal løsning, men vi fikk det bedre til tilslutt med en del pull og merge request. + +Kvaliteten på dataene våre mener vi er gode ettersom vi har en API som man trenger å lage bruker for (gratis) og har utrolig mye data for mange mange år og mange steder. Vi mener dette styrker troverdigheten og legitimiteten til dataene våre. Vi har fått laget mange diagrammer og mange Jupyter Notebooks som gjør at brukeren kan velge fra forskjellige perioder og steder de ønsker informasjon om værforhold fra. Grafene er lett lesbare og har realistisk data noe vi mener styrker kvaliteten på dataene våre. Ettersom dataene fra API-en vår er i kelvin og ikke celsius har det noen steder vært litt komplikasjoner med riktig temperatur, noe som gjerne svekker kvaliteten litt. + +For videre forskning kunne vi utviklet kodene våre til å gi brukeren valget om å velge byer utenfor Norge. Vi har i dette prosjektet begrenset til Norge, så å ha muligheten til å sjekke byer i hele verden ville vært et bra og naturlig steg videre i forskningen. + +Det vi mener er noen av de viktigste læringspunktene er at vi har fått blitt bedre kjent med biblioteker og fått god øving på å programmere og jobbe i gruppe. Med store datamengder av været kan man sammenligne værforhold i dag og mange år tilbake og se på forskjellene. Da kan man prøve å se det i miljøaspekt og det kunne også vært interessante forhold å se på videre. Våre værdata i sammenheng med miljø og klima utviklingen gjennom årene. Andre viktige læringspunkter vi har fått bedre forståelse for er iteratorer og list-comprehensions, enhetstesting, kunne håndtere data lagring, feil og filbehandlinger. + +Vi tror at å ha erfaringene vi har lært om Pythons generelt, VS-Code, Jupyter Notebooks vil komme godt med i arbeidslivet dersom man finner en jobb innenfor programmerings område. Samtidig som de grunnleggende programmeringsferdighetene vil komme godt med, vil det at vi har jobbet mye med statistikk og grafer gjøre at vi har en bedre forståelse av de områdene noe som man vil trenge videre i studie og i en eventuell jobb. Det at vi har jobbet i grupper har også en positiv påvirkning ved at vi lærer og samarbeidet og kommunisere med andre. \ No newline at end of file From 4dafb498511699c4f93a9940fd6285d63cf03367 Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 15:40:50 +0200 Subject: [PATCH 16/21] add correlation matrix --- notebooks/notebook_compare_one_day_data.ipynb | 66 ++++++++++++++++++ .../notebook_compare_one_week_data.ipynb | 68 +++++++++++++++++++ .../notebook_compare_statistic_data.ipynb | 68 +++++++++++++++++++ notebooks/notebook_one_day_data.ipynb | 63 +++++++++++++++-- notebooks/notebook_one_week_data.ipynb | 56 ++++++++++++++- notebooks/notebook_statistic_data.ipynb | 57 ++++++++++++++++ 6 files changed, 372 insertions(+), 6 deletions(-) diff --git a/notebooks/notebook_compare_one_day_data.ipynb b/notebooks/notebook_compare_one_day_data.ipynb index 84922c1..2f04f25 100644 --- a/notebooks/notebook_compare_one_day_data.ipynb +++ b/notebooks/notebook_compare_one_day_data.ipynb @@ -491,6 +491,72 @@ "# Show the plot\n", "plt.show()" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Korrelasjonsmatrise\n", + "Ved hjelp av Seaborn har vi visualisert korrelasjons koeffisienten mellom ulike variabler. Det viser sammenhengen mellom variablene, og hvordan de påvirker hverandre. Sammenhengen kan forklares slik:\n", + "- +1 - Sterk positiv sammenheng\n", + "- 0 - Ingen sammenheng\n", + "- -1 - Sterk negativ sammenheng\n", + "\n", + "For å lese av grafen, finner man en variabel vertikalt og en horisontal variabel. Der de møtes i diagrammet er korrelasjons koeffisienten mellom disse.\n", + "\n", + "Her har vi laget en korrelasjonsmatrsie for hver av stedene, slik at man kan sammeligne om et sted har sterkere eller svakere sammenhenger mellom de ulike variablene.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_compare_one_day`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Where the figure should be saved when exported\n", + "output_folder = \"../data/figures/output_fig_compare_one_day\"\n", + "\n", + "# Creates the folder if it does not exist\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "cities = [\"city_1\", \"city_2\"]\n", + "\n", + "# The columns we want to include in the correlation matrix\n", + "columns_needed = ['main.temp', 'main.pressure', 'main.humidity', 'wind.speed', 'wind.gust', 'clouds.all', 'rain.1h', 'snow.1h']\n", + "\n", + "# Two horisontally plots (1 row, 2 columns), width and height of the figure\n", + "fig, axes = plt.subplots(1, 2, figsize=(14, 6)) # Adjust figsize as needed\n", + "\n", + "# Loops through both cities, the enumerate make sure we get both the city and the index of the city\n", + "for i, city in enumerate(cities):\n", + " # Stores the data for the right city in cities\n", + " city_df = both_cities_df[both_cities_df[\"city\"] == city]\n", + " city_name = city_df['city_name'].iloc[0]\n", + "\n", + " df_selected = city_df[columns_needed]\n", + "\n", + " # Calculates the correlation\n", + " corr_matrix = df_selected.corr()\n", + "\n", + " # Makes a seaborn heatmat, with the values in the rectangel and 2 decimals\n", + " sns.heatmap(corr_matrix, annot=True, cmap=\"coolwarm\", fmt=\".2f\", ax=axes[i])\n", + "\n", + " # Add a title, with the city_name\n", + " axes[i].set_title(f\"Correlation Matrix - {city_name}\")\n", + "\n", + "# Save the plot to the 'data/figures/output_fig_compare_one_day' folder\n", + "plot_path = os.path.join(output_folder, f\"correlation_matrix_{city_1}_{city_2}.png\")\n", + "plt.savefig(plot_path) # Save the plot as a PNG file\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] } ], "metadata": { diff --git a/notebooks/notebook_compare_one_week_data.ipynb b/notebooks/notebook_compare_one_week_data.ipynb index 066d7f8..b8b7b41 100644 --- a/notebooks/notebook_compare_one_week_data.ipynb +++ b/notebooks/notebook_compare_one_week_data.ipynb @@ -523,6 +523,74 @@ "# Show the plot\n", "plt.show()" ] + }, + { + "cell_type": "markdown", + "id": "c5390c2d", + "metadata": {}, + "source": [ + "### Korrelasjonsmatrise\n", + "Ved hjelp av Seaborn har vi visualisert korrelasjons koeffisienten mellom ulike variabler. Det viser sammenhengen mellom variablene, og hvordan de påvirker hverandre. Sammenhengen kan forklares slik:\n", + "- +1 - Sterk positiv sammenheng\n", + "- 0 - Ingen sammenheng\n", + "- -1 - Sterk negativ sammenheng\n", + "\n", + "For å lese av grafen, finner man en variabel vertikalt og en horisontal variabel. Der de møtes i diagrammet er korrelasjons koeffisienten mellom disse.\n", + "\n", + "Her har vi laget en korrelasjonsmatrsie for hver av stedene, slik at man kan sammeligne om et sted har sterkere eller svakere sammenhenger mellom de ulike variablene.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_compare_one_week`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "55d18857", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Where the figure should be saved when exported\n", + "output_folder = \"../data/figures/output_fig_compare_one_week\"\n", + "\n", + "# Creates the folder if it does not exist\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "cities = [\"city_1\", \"city_2\"]\n", + "\n", + "# The columns we want to include in the correlation matrix\n", + "columns_needed = ['main.temp', 'main.pressure', 'main.humidity', 'wind.speed', 'wind.gust', 'clouds.all', 'rain.1h', 'snow.1h']\n", + "\n", + "# Two horisontally plots (1 row, 2 columns), width and height of the figure\n", + "fig, axes = plt.subplots(1, 2, figsize=(14, 6)) # Adjust figsize as needed\n", + "\n", + "# Loops through both cities, the enumerate make sure we get both the city and the index of the city\n", + "for i, city in enumerate(cities):\n", + " # Stores the data for the right city in cities\n", + " city_df = both_cities_df[both_cities_df[\"city\"] == city]\n", + " city_name = city_df['city_name'].iloc[0]\n", + "\n", + " df_selected = city_df[columns_needed]\n", + "\n", + " # Calculates the correlation\n", + " corr_matrix = df_selected.corr()\n", + "\n", + " # Makes a seaborn heatmat, with the values in the rectangel and 2 decimals\n", + " sns.heatmap(corr_matrix, annot=True, cmap=\"coolwarm\", fmt=\".2f\", ax=axes[i])\n", + "\n", + " # Add a title, with the city_name\n", + " axes[i].set_title(f\"Correlation Matrix - {city_name}\")\n", + "\n", + "# Save the plot to the 'data/figures/output_fig_compare_one_week' folder\n", + "plot_path = os.path.join(output_folder, f\"correlation_matrix_{city_1}_{city_2}.png\")\n", + "plt.savefig(plot_path) # Save the plot as a PNG file\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] } ], "metadata": { diff --git a/notebooks/notebook_compare_statistic_data.ipynb b/notebooks/notebook_compare_statistic_data.ipynb index aec67f8..1152110 100644 --- a/notebooks/notebook_compare_statistic_data.ipynb +++ b/notebooks/notebook_compare_statistic_data.ipynb @@ -361,6 +361,74 @@ "# Show the plot\n", "plt.show()" ] + }, + { + "cell_type": "markdown", + "id": "04c13808", + "metadata": {}, + "source": [ + "### Korrelasjonsmatrise\n", + "Ved hjelp av Seaborn har vi visualisert korrelasjons koeffisienten mellom ulike variabler. Det viser sammenhengen mellom variablene, og hvordan de påvirker hverandre. Sammenhengen kan forklares slik:\n", + "- +1 - Sterk positiv sammenheng\n", + "- 0 - Ingen sammenheng\n", + "- -1 - Sterk negativ sammenheng\n", + "\n", + "For å lese av grafen, finner man en variabel vertikalt og en horisontal variabel. Der de møtes i diagrammet er korrelasjons koeffisienten mellom disse.\n", + "\n", + "Her har vi laget en korrelasjonsmatrsie for hver av stedene, slik at man kan sammeligne om et sted har sterkere eller svakere sammenhenger mellom de ulike variablene.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_compare_statistic`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ceb72c4e", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Where the figure should be saved when exported\n", + "output_folder = \"../data/figures/output_fig_compare_statistic\"\n", + "\n", + "# Creates the folder if it does not exist\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "cities = [\"city_1\", \"city_2\"]\n", + "\n", + "# The columns we want to include in the correlation matrix\n", + "columns_needed = ['temp.mean_celsius', 'pressure.mean', 'humidity.mean', 'wind.mean', 'clouds.mean', 'precipitation.mean']\n", + "\n", + "# Two horisontally plots (1 row, 2 columns), width and height of the figure\n", + "fig, axes = plt.subplots(1, 2, figsize=(14, 6)) # Adjust figsize as needed\n", + "\n", + "# Loops through both cities, the enumerate make sure we get both the city and the index of the city\n", + "for i, city in enumerate(cities):\n", + " # Stores the data for the right city in cities\n", + " city_df = both_cities_df[both_cities_df[\"city\"] == city]\n", + " city_name = city_df['city_name'].iloc[0]\n", + "\n", + " df_selected = city_df[columns_needed]\n", + "\n", + " # Calculates the correlation\n", + " corr_matrix = df_selected.corr()\n", + "\n", + " # Makes a seaborn heatmat, with the values in the rectangel and 2 decimals\n", + " sns.heatmap(corr_matrix, annot=True, cmap=\"coolwarm\", fmt=\".2f\", ax=axes[i])\n", + "\n", + " # Add a title, with the city_name\n", + " axes[i].set_title(f\"Correlation Matrix - {city_name}\")\n", + "\n", + "# Save the plot to the 'data/figures/output_fig_compare_statistic' folder\n", + "plot_path = os.path.join(output_folder, f\"correlation_matrix_{city_1}_{city_2}.png\")\n", + "plt.savefig(plot_path) # Save the plot as a PNG file\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] } ], "metadata": { diff --git a/notebooks/notebook_one_day_data.ipynb b/notebooks/notebook_one_day_data.ipynb index 26d6102..19cd48e 100644 --- a/notebooks/notebook_one_day_data.ipynb +++ b/notebooks/notebook_one_day_data.ipynb @@ -180,7 +180,7 @@ "x_axis = df.index\n", "\n", "# Choose the width and height of the plot\n", - "plt.figure(figsize=(12, 6))\n", + "plt.figure(figsize=(14, 6))\n", "\n", "# Scatter plot for each temperature reading\n", "plt.scatter(x_axis, temp, color='tab:red', label='Temperaturmålinger', alpha=0.7)\n", @@ -368,7 +368,7 @@ "temp_mean = temp.mean().round(2)\n", "\n", "# Two vertically stacked axis, (2 rows, 1 column), width and height of the figure, and the axis share the same x_axis\n", - "fig, (ax1, ax3) = plt.subplots(2, 1,figsize=(15, 8), sharex=True)\n", + "fig, (ax1, ax3) = plt.subplots(2, 1,figsize=(14, 6), sharex=True)\n", "\n", "# Set the title for the diagram, above the first axis, with city_name and input_date\n", "ax1.set_title(f'Weather data for {city_name} ({date}) ')\n", @@ -429,8 +429,61 @@ "# Adjust layout\n", "plt.tight_layout()\n", "\n", - "# Save the plot to the 'data/figures/output_one_day' folder\n", - "plot_path = os.path.join(output_folder, f\"weather_data_plot{city_name}.png\")\n", + "# Save the plot to the 'data/figures/output_fig_one_day' folder\n", + "plot_path = os.path.join(output_folder, f\"weather_data_plot_{city_name}.png\")\n", + "plt.savefig(plot_path) # Save the plot as a PNG file\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Korrelasjonsmatrise\n", + "Ved hjelp av Seaborn har vi visualisert korrelasjons koeffisienten mellom ulike variabler. Det viser sammenhengen mellom variablene, og hvordan de påvirker hverandre. Sammenhengen kan forklares slik:\n", + "- +1 - Sterk positiv sammenheng\n", + "- 0 - Ingen sammenheng\n", + "- -1 - Sterk negativ sammenheng\n", + "\n", + "For å lese av grafen, finner man en variabel vertikalt og en horisontal variabel. Der de møtes i diagrammet er korrelasjons koeffisienten mellom disse.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_one_day`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "\n", + "# Where the figure should be saved when exported\n", + "output_folder = \"../data/figures/output_fig_one_day\"\n", + "\n", + "# Creates the folder if it does not exist\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "# The columns we want to include in the correlation matrix\n", + "columns_needed = ['main.temp', 'main.pressure', 'main.humidity', 'wind.speed', 'wind.gust', 'clouds.all', 'rain.1h', 'snow.1h']\n", + "df_selected = df[columns_needed]\n", + "\n", + "# Calculates the correlation\n", + "corr_matrix = df_selected.corr()\n", + "\n", + "# Choose the width and height of the plot\n", + "plt.figure(figsize=(14, 6))\n", + "\n", + "# Makes a seaborn heatmat, with the values in the rectangel and 2 decimals\n", + "sns.heatmap(corr_matrix, annot=True, cmap=\"coolwarm\", fmt=\".2f\")\n", + "\n", + "# Add a title, with the city_name\n", + "plt.title(f\"Correlation Matrix - {city_name}\")\n", + "\n", + "# Save the plot to the 'data/figures/output_fig_one_day' folder\n", + "plot_path = os.path.join(output_folder, f\"correlation_matrix_{city_name}.png\")\n", "plt.savefig(plot_path) # Save the plot as a PNG file\n", "\n", "# Show the plot\n", @@ -513,7 +566,7 @@ "\n", "x_axis = df.index\n", "\n", - "plt.figure(figsize=(12, 6))\n", + "plt.figure(figsize=(14, 6))\n", "\n", "# Plot the original data\n", "plt.scatter(x_axis, y, color='green', label='Original data', alpha=0.6)\n", diff --git a/notebooks/notebook_one_week_data.ipynb b/notebooks/notebook_one_week_data.ipynb index 8c9b5ea..24992ea 100644 --- a/notebooks/notebook_one_week_data.ipynb +++ b/notebooks/notebook_one_week_data.ipynb @@ -448,13 +448,67 @@ "plt.tight_layout()\n", "\n", "# Save the plot to the 'data/figures/output_fig_one_week' folder\n", - "plot_path = os.path.join(output_folder, f\"weather_data_plot{city_name}.png\")\n", + "plot_path = os.path.join(output_folder, f\"weather_data_plot_{city_name}.png\")\n", "plt.savefig(plot_path) # Save the plot as a PNG file\n", "\n", "\n", "# Show the plot\n", "plt.show()" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Korrelasjonsmatrise\n", + "Ved hjelp av Seaborn har vi visualisert korrelasjons koeffisienten mellom ulike variabler. Det viser sammenhengen mellom variablene, og hvordan de påvirker hverandre. Sammenhengen kan forklares slik:\n", + "- +1 - Sterk positiv sammenheng\n", + "- 0 - Ingen sammenheng\n", + "- -1 - Sterk negativ sammenheng\n", + "\n", + "For å lese av grafen, finner man en variabel vertikalt og en horisontal variabel. Der de møtes i diagrammet er korrelasjons koeffisienten mellom disse.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_one_week`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import os\n", + "\n", + "# Where the figure should be saved when exported\n", + "output_folder = \"../data/figures/output_fig_one_week\"\n", + "\n", + "# Creates the folder if it does not exist\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "# The columns we want to include in the correlation matrix\n", + "columns_needed = ['main.temp', 'main.pressure', 'main.humidity', 'wind.speed', 'wind.gust', 'clouds.all', 'rain.1h', 'snow.1h']\n", + "selected_df = df[columns_needed]\n", + "\n", + "# Calculates the correlation\n", + "corr_matrix = selected_df.corr()\n", + "\n", + "# Choose the width and height of the plot\n", + "plt.figure(figsize=(14, 6))\n", + "\n", + "# Makes a seaborn heatmat, with the values in the rectangel and 2 decimals\n", + "sns.heatmap(corr_matrix, annot=True, cmap=\"coolwarm\", fmt=\".2f\")\n", + "\n", + "# Add a title, with the city_name\n", + "plt.title(f\"Correlation Matrix - {city_name}\")\n", + "\n", + "# Save the plot to the 'data/figures/output_fig_one_week' folder\n", + "plot_path = os.path.join(output_folder, f\"correlation_matrix_{city_name}.png\")\n", + "plt.savefig(plot_path) # Save the plot as a PNG file\n", + "\n", + "# Show the plot\n", + "plt.show()\n" + ] } ], "metadata": { diff --git a/notebooks/notebook_statistic_data.ipynb b/notebooks/notebook_statistic_data.ipynb index d6cc41f..db56597 100644 --- a/notebooks/notebook_statistic_data.ipynb +++ b/notebooks/notebook_statistic_data.ipynb @@ -261,6 +261,63 @@ "\n", "plt.tight_layout()\n", "\n", + "# Save the plot to the 'data/figures/output_fig_statistic' folder\n", + "plot_path = os.path.join(output_folder, f\"weather_data_plot_{city_name}.png\")\n", + "plt.savefig(plot_path) # Save the plot as a PNG file\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Korrelasjonsmatrise\n", + "Ved hjelp av Seaborn har vi visualisert korrelasjons koeffisienten mellom ulike variabler. Det viser sammenhengen mellom variablene, og hvordan de påvirker hverandre. Sammenhengen kan forklares slik:\n", + "- +1 - Sterk positiv sammenheng\n", + "- 0 - Ingen sammenheng\n", + "- -1 - Sterk negativ sammenheng\n", + "\n", + "For å lese av grafen, finner man en variabel vertikalt og en horisontal variabel. Der de møtes i diagrammet er korrelasjons koeffisienten mellom disse.\n", + "\n", + "Grafen lagres i mappen `../data/figures/output_fig_statistic`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import sys\n", + "import os\n", + "\n", + "output_folder = \"../data/figures/output_fig_statistic\"\n", + "# Create the folder if it doesn't exist\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "# The columns we want to include in the correlation matrix\n", + "columns_needed = ['temp.mean_celsius', 'pressure.mean', 'humidity.mean', 'wind.mean', 'clouds.mean', 'precipitation.mean']\n", + "df_selected = df[columns_needed]\n", + "\n", + "# Calculates the correlation\n", + "corr_matrix = df_selected.corr()\n", + "\n", + "# Choose the width and height of the plot\n", + "plt.figure(figsize=(14, 6))\n", + "\n", + "# Makes a seaborn heatmat, with the values in the rectangel and 2 decimals\n", + "sns.heatmap(corr_matrix, annot=True, cmap=\"coolwarm\", fmt=\".2f\")\n", + "\n", + "# Add a title, with the city_name\n", + "plt.title(f\"Correlation Matrix - {city_name}\")\n", + "\n", + "# Save the plot to the 'data/figures/output_fig_statistic' folder\n", + "plot_path = os.path.join(output_folder, f\"correlation_matrix_{city_name}.png\")\n", + "plt.savefig(plot_path) # Save the plot as a PNG file\n", + "\n", "# Show the plot\n", "plt.show()" ] From a369d4fd2bee95ff01586e7bb5389fa6937f2f82 Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 17:53:59 +0200 Subject: [PATCH 17/21] modify test, import package right, add AAA description --- tests/README.md | 20 ++++++--- tests/unit/test_4_one_day.py | 31 ------------- tests/unit/test_clean_data.py | 10 ++++- tests/unit/test_fetch_one_day.py | 37 ++++++++++++++++ tests/unit/test_format_yeardata.py | 71 ++++++++++++------------------ tests/unit/test_input.py | 23 +++++----- tests/unit/test_letter_one_day.py | 2 +- tests/unit/test_nordic_cityname.py | 7 ++- tests/unit/test_one_day.py | 8 ++-- 9 files changed, 112 insertions(+), 97 deletions(-) delete mode 100644 tests/unit/test_4_one_day.py create mode 100644 tests/unit/test_fetch_one_day.py diff --git a/tests/README.md b/tests/README.md index 8703a8c..5983302 100644 --- a/tests/README.md +++ b/tests/README.md @@ -6,9 +6,19 @@ Her er litt info om testene: - `test_letter_one_day.py` Tester at man får samme data av et sted med stor og liten bokstav. - `test_one_day.py` Tester at funksjonaliteten for å gjøre om fra unix-timestamp blir den samme som input date. - `test_test.py` Bare en første test for å sjekke at unittest funker. -- `test_4_one_day.py` Tester om funksjonen fetch_time_data funker som forventet og at dataene som blir hentet er korrekt og identiske med dataen som er skrevet -- `test_clean_data.py` Tester datarensing for nedbør, både snø og regn og konversjon av kelvin til celsius +- `test_fetch_one_day.py` Tester om funksjonen fetch_time_data funker som forventet og at dataene som blir hentet er korrekt og identiske med dataen som er skrevet +- `test_clean_data.py` Tester datarensing for nedbør, både snø og regn og konversjon av kelvin til celsius. - `test_format_yeardata.py` Tester at kodene i my_package.data er konsistente og gir oss de verdiene vi kan forvente. Bruker mock for å blant annet teste API, dictionary, city. Bruker også mock til å gjøre en negativ test. -- `test_format.py` Testter at API og env er konsistente og satt opp korrekt og inneholder de nøklene man forventer -- `test_input.py` Testter date_to_unix og at den inputen vi får fra bruker returnerer korekt UNIX timestamp, bruker mock til å teste dette -- `test_nordic_cityname.py` Tester at funksjonen replace_nordic gjør at man kan skrive byer med bokstavene æ, ø og å, tester tre ulike byer slik alle bokstavene blir testet \ No newline at end of file +- `test_format.py` Tester at API og env er konsistente og satt opp korrekt og inneholder de nøklene man forventer. +- `test_input.py` Tester date_to_unix og at den inputen vi får fra bruker returnerer korrekt UNIX timestamp, bruker mock til å teste dette +- `test_nordic_cityname.py` Tester at funksjonen replace_nordic gjør at man kan skrive byer med bokstavene æ, ø og å, tester tre ulike byer slik alle bokstavene blir testet + +Under utformingen av testene har vi følgt strukturen: Arrange - Act - Assert (AAA). +- Arrange: sette opp alt det nødvendige for å kjøre testen. +- Act: gjennomføre test på testkode, med test variabler. +- Assert: Sette verdien lik forventet utfall, og sjekke om det stemmer. + +Et eksempel på denne strukturen finner vi blant annet i `test_letter_one_day.py`: +- Arrange: vi setter opp test-navn, med både små og store bokstaver. +- Act: vi gjennomfører en henting av dataen for begge steder. +- Assert: vi sjekker om begge test-navnene får lik verdi. Altså sjekker vi om stedsnavn er case-sensetiv eller ikke. \ No newline at end of file diff --git a/tests/unit/test_4_one_day.py b/tests/unit/test_4_one_day.py deleted file mode 100644 index a467062..0000000 --- a/tests/unit/test_4_one_day.py +++ /dev/null @@ -1,31 +0,0 @@ -import unittest -import sys -import os - -# Add the src folder to the Python path -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../src'))) - -from my_package.data import fetch_time_data - -class TestPart4(unittest.TestCase): - - def test_fetch_data(self): - # Testdata - #sample_data = {"temperature": 25, "humidity": 60} - city_name = "Oslo" - start_date = "2025, 03, 25, 11, 00" - end_date = "2025, 03, 25, 12, 00" - - # Hent data fra API - data = fetch_time_data(start_date, end_date, city_name) - - # Test if data is collected correctly - if data: - self.assertIn("temperature", data) - self.assertIn("humidity", data) - #else: - #self.fail("No data returned from the API") - -if __name__ == "__main__": - unittest.main() - diff --git a/tests/unit/test_clean_data.py b/tests/unit/test_clean_data.py index ca0b9ae..dbed895 100644 --- a/tests/unit/test_clean_data.py +++ b/tests/unit/test_clean_data.py @@ -1,8 +1,14 @@ import unittest import pandas as pd import numpy as np -from src.my_package.data import extract_city_df -from src.my_package.util import ( +import sys +import os + +# Add the src folder to the Python path +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../src'))) + +from my_package.data import extract_city_df +from my_package.util import ( kelvin_to_celsius, ensure_column, fill_column_0 diff --git a/tests/unit/test_fetch_one_day.py b/tests/unit/test_fetch_one_day.py new file mode 100644 index 0000000..c58a8c8 --- /dev/null +++ b/tests/unit/test_fetch_one_day.py @@ -0,0 +1,37 @@ +import unittest +import sys +import os + +# Add the src folder to the Python path +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../src'))) + +from my_package.data import fetch_time_data + +class TestFetchOneDay(unittest.TestCase): + + def test_fetch_data(self): + # Testdata + #sample_data = {"temperature": 25, "humidity": 60} + city_name = "Oslo" + # start_date = "2025, 03, 25, 11, 00" + start_date = 1742896800 + # end_date = "2025, 03, 25, 12, 00" + end_date = 1742900400 + + # Fetch data from the API, the underscore indicates the folder, which we dont use here + data, _ = fetch_time_data(start_date, end_date, city_name) + + # Test if data is collected correctly + # We know the data is stored inside the 'list' + if data and "list" in data and data["list"]: + # Then we know both temp and humidity is stored inside the 'main' + self.assertIn("temp", data["list"][0]["main"]) + self.assertIn("humidity", data["list"][0]["main"]) + # And we check if wind is in the list + self.assertIn("wind", data["list"][0]) + else: + self.fail("No data returned from the API") + +if __name__ == "__main__": + unittest.main() + diff --git a/tests/unit/test_format_yeardata.py b/tests/unit/test_format_yeardata.py index 7c5363b..465e392 100644 --- a/tests/unit/test_format_yeardata.py +++ b/tests/unit/test_format_yeardata.py @@ -1,8 +1,13 @@ import unittest import os import requests +import sys + +# Add the src folder to the Python path +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../src'))) + from unittest.mock import patch -from src.my_package.data import fetch_stat_data +from my_package.data import fetch_stat_data class TestDataFormatConsistency(unittest.TestCase): @@ -10,13 +15,25 @@ class TestDataFormatConsistency(unittest.TestCase): def test_fetch_data_success(self, mock_get): # Sample valid response data structure for the API mock_data = { - 'city': { - 'name': 'Maura', - 'country': 'NO' - }, - 'data': [ - {'year': 2020, 'temperature': 12.5, 'precipitation': 100}, - {'year': 2021, 'temperature': 13.0, 'precipitation': 120}, + # city_id for Maura + 'city_id': 3146270, + 'result': [ + { + "month": 1, + "day": 1, + "temp": { + "record_min": 262.21, + "record_max": 278.3, + "average_min": 269.82, + "average_max": 273.95, + "median": 273.3, + "mean": 272.12, + "p25": 268.21, + "p75": 275.32, + "st_dev": 3.91, + "num": 312 + } + } ] } @@ -32,43 +49,11 @@ def test_fetch_data_success(self, mock_get): # Check if the data returned is a dictionary and contains the expected keys self.assertIsInstance(data, dict) - self.assertIn('city', data) - self.assertIn('data', data) - - # Check if the 'city' key contains the expected structure - self.assertIn('name', data['city']) - self.assertIn('country', data['city']) - - # Check if the 'data' key contains a list of dictionaries with required fields - self.assertIsInstance(data['data'], list) - self.assertGreater(len(data['data']), 0) # Check that there is at least one year record - - for record in data['data']: - self.assertIn('year', record) - self.assertIn('temperature', record) - self.assertIn('precipitation', record) - self.assertIsInstance(record['year'], int) - self.assertIsInstance(record['temperature'], (int, float)) - self.assertIsInstance(record['precipitation'], (int, float)) + self.assertIn('city_id', data) + self.assertIn('result', data) # Test that the folder variable exists and is a valid path - self.assertEqual(folder, "../data/output_statistikk") - - @patch('requests.get') - def test_fetch_data_failure(self, mock_get): - # Mock an unsuccessful response (non-200 status code) - mock_response = unittest.mock.Mock() - mock_response.status_code = 404 - mock_response.json.return_value = {} - - mock_get.return_value = mock_response - - city_name = 'Maura' - data, folder = fetch_stat_data(city_name) - - # Ensure data is empty and folder is correct even on failure - self.assertNotEqual(data, {}) - self.assertNotEqual(folder, "../data/output_statistikk") + self.assertEqual(folder, "../data/json/output") def test_api_key_in_env(self): # Check if the API_KEY is loaded from the environment diff --git a/tests/unit/test_input.py b/tests/unit/test_input.py index 2f76b5c..2f59780 100644 --- a/tests/unit/test_input.py +++ b/tests/unit/test_input.py @@ -3,26 +3,29 @@ import datetime import sys import os -from src.my_package import date_to_unix # This is the module we are testing # This will make the absolute path from the root of the project, and will therefore work every time sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../../src"))) +from my_package.date_to_unix import from_unix_timestamp # This is the module we are testing +from my_package.date_to_unix import get_unix_timestamp # This is the module we are testing +from my_package.util import CEST_OFFSET + #the goal for this test is to simulate user input and check if the returned UNIX timestamps are correct, for this we use mock input class TestDateToUnix(unittest.TestCase): - @patch('builtins.input', side_effect=["2024, 4, 13, 12, 30", "2024, 4, 14, 15, 45"]) + @patch('builtins.input', side_effect=["2024, 5, 13, 12, 30", "2024, 5, 14, 15, 45"]) def test_get_unix_timestamp(self, mock_input): _ = mock_input # Expected UNIX timestamps for the hardcoded inputs - expected_start = int(datetime.datetime(2024, 4, 13, 12, 30).timestamp()) - expected_end = int(datetime.datetime(2024, 4, 14, 15, 45).timestamp()) + expected_start = int(datetime.datetime(2024, 5, 13, 12, 30).timestamp()) + CEST_OFFSET + expected_end = int(datetime.datetime(2024, 5, 14, 15, 45).timestamp()) + CEST_OFFSET # Call the function which uses input() — the @patch above mocks input to return predefined values - unix_start, unix_end = date_to_unix.get_unix_timestamp() + unix_start, unix_end = get_unix_timestamp() # Check that the returned timestamps match the expected values self.assertEqual(unix_start, expected_start) @@ -32,15 +35,15 @@ def test_get_unix_timestamp(self, mock_input): def test_from_unix_timestamp(self): # Create known datetime objects - start_dt = datetime.datetime(2024, 4, 13, 12, 30) - end_dt = datetime.datetime(2024, 4, 14, 15, 45) + start_dt = datetime.datetime(2024, 5, 13, 12, 30) + end_dt = datetime.datetime(2024, 5, 14, 15, 45) # Convert these to UNIX timestamps - unix_start = int(start_dt.timestamp()) - unix_end = int(end_dt.timestamp()) + unix_start = int(start_dt.timestamp()) + CEST_OFFSET + unix_end = int(end_dt.timestamp()) + CEST_OFFSET # Use the function to convert them back to datetime - start_from_unix, end_from_unix = date_to_unix.from_unix_timestamp(unix_start, unix_end) + start_from_unix, end_from_unix = from_unix_timestamp(unix_start, unix_end) # Assert that the conversion back to datetime matches the original values self.assertEqual(start_from_unix, start_dt) diff --git a/tests/unit/test_letter_one_day.py b/tests/unit/test_letter_one_day.py index 53ad395..0cc8108 100644 --- a/tests/unit/test_letter_one_day.py +++ b/tests/unit/test_letter_one_day.py @@ -5,7 +5,7 @@ # Add the src folder to the Python path sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../../src'))) -from my_package.fetch_current_data import fetch_current_data +from my_package.data import fetch_current_data class TestCityNameCase(unittest.TestCase): diff --git a/tests/unit/test_nordic_cityname.py b/tests/unit/test_nordic_cityname.py index b3461cb..16ec0bc 100644 --- a/tests/unit/test_nordic_cityname.py +++ b/tests/unit/test_nordic_cityname.py @@ -1,6 +1,11 @@ import unittest +import sys +import os -from src.my_package.util import replace_nordic +# This will make the absolute path from the root of the project, and will therefore work every time +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../../src"))) + +from my_package.util import replace_nordic #test one city for every letter "æøå" to see that they all work class TestReplaceNordic(unittest.TestCase): diff --git a/tests/unit/test_one_day.py b/tests/unit/test_one_day.py index ad6e05c..b2d358e 100644 --- a/tests/unit/test_one_day.py +++ b/tests/unit/test_one_day.py @@ -2,11 +2,11 @@ import sys import os from datetime import datetime -from src.my_package.date_to_unix import from_unix_timestamp # This will make the absolute path from the root of the project, and will therefor work every time sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../../src"))) - +from my_package.date_to_unix import from_unix_timestamp +from my_package.util import CEST_OFFSET class TestGetUnixTimestamp(unittest.TestCase): @@ -20,8 +20,8 @@ def test_get_unix_timestamp(self): end_date = datetime.strptime(end_date_input, "%Y, %m, %d, %H, %M") # Get the Unix timestamp by calling .timestamp() - expected_unix_start = int(start_date.timestamp()) - expected_unix_end = int(end_date.timestamp()) + expected_unix_start = int(start_date.timestamp()) + CEST_OFFSET + expected_unix_end = int(end_date.timestamp()) + CEST_OFFSET # Call the function directly with test data function_unix_start, function_unix_end = from_unix_timestamp(expected_unix_start, expected_unix_end) From d29ae709916de83b113798b3991082a4a77e934d Mon Sep 17 00:00:00 2001 From: toravest Date: Sat, 24 May 2025 17:55:27 +0200 Subject: [PATCH 18/21] rewrite readme.md files --- README.md | 74 +++++++++++++++++++++++++++------------------ data/README.md | 39 ++++++++++++++++++------ docs/README.md | 6 +++- notebooks/README.md | 4 ++- resources/README.md | 13 ++++++-- src/README.md | 4 +-- 6 files changed, 95 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 00de46d..b3f363d 100644 --- a/README.md +++ b/README.md @@ -14,25 +14,25 @@ - For å hente data er det kritisk med en API-KEY, i `resources/README.md` står det forklart hvordan denne kan lages, og lagres. -- I samme README.md fil finnes informasjon om de ulike notebookene og deres funksjon. +- I samme `README.md` fil finnes informasjon om de ulike notebookene og deres funksjon. ## Struktur Her kommer oversikt over strukturen i prosjektet: -- `data` denne mappen inneholder output data -- `docs` denne mappen inneholder dokumentasjon -- `notebooks` denne mappen inneholder notebookene med all funksjonalitet -- `resources` denne mappen inneholder våre kilder -- `src` denne mappen inneholder python filene -- `tests` denne mappen inneholder våre unittester +- `data` denne mappen inneholder output data, skiller mellom json, figures og test data. +- `docs` denne mappen inneholder dokumentasjon, blant annet refleksjonsnotat og KI-deklarasjon. +- `notebooks` denne mappen inneholder alle notebookene med all funksjonalitet. +- `resources` denne mappen inneholder informasjon om kildene våre. +- `src` denne mappen inneholder alle python filene. +- `tests` denne mappen inneholder alle unit-testene våre. Det kan leses mer om disse i deres tilhørende `README.md` filer. ### Vår visjon av oppgaven Vår visjon, og ønske om sluttprodukt, er en værapplikasjon med mange muligheter som: -- Velge ønsket sted, å få relevant tidsdata for dagen. +- Velge ønsket sted, å få relevant værdata for akkurat nå. - Velge ønsket tidsperiode, på inntil 7-dager for det siste året, og sted for å få hisoriske værdata. - Velge ønsket tidsperiode, og 2 steder for å sammenligne værdata innenfor samme tidsperiode. -- Velge ønsket sted, å få en prediksjon på fremtidig vær. +- Velge ønsket sted, å få en prediktert temperatur ved input av andre værforhold. ### Oppgave - oversikt - [Oppgave 1 - Utviklingsmiljø](#oppgave-1---sett-opp-utviklingsmiljø) @@ -41,27 +41,28 @@ Vår visjon, og ønske om sluttprodukt, er en værapplikasjon med mange mulighet - [Oppgave 4 - Dataanalyse](#oppgave-4---dataanalyse) - [Oppgave 5 - Visualisering](#oppgave-5---visualisering) - [Oppgave 6 - Predektiv analyse](#oppgave-6---prediktiv-analyse) -- [Oppgave 7 - Refleksjonsnotat](#oppgave-7---refleksjonsnotat) #### Oppgave 1 - Sett opp utviklingsmiljø -I oppsettet av utviklingmsiljøet har vi fokusert på å innstallere relevante biblioteker, s.feks: +I oppsettet av utviklingmsiljøet har vi fokusert på å innstallere relevante biblioteker, feks: - Numpy - Matplotlib - Pandas - Jupyper Notebook +Hvordan utviklingsmiljøet kan aktiveres står forklart under [Installering](#installering). + #### Oppgave 2 - Datainnsamling For å finne data, startet vi å lete på [Kaggle](https://www.kaggle.com), og fant et interessant datasett, men som ikke passet helt til prosjektets behov. Da begynte vi å lete etter API-er, først på Metrologisk Institutt: - [Airqualityforecast](https://api.met.no/weatherapi/airqualityforecast/0.1/documentation) - - Vanskelig å kunne hente data fra ønsket sted, komplisert request med masse data + - Vanskelig å kunne hente data fra ønsket sted, komplisert request med masse data. - [Frost](https://frost.met.no/index.html) - - Vanskelig å kunne hente data fra ønsket sted, stasjonsbasert + - Vanskelig å kunne hente data fra ønsket sted, stasjonsbasert. - [Locationforecast](https://api.met.no/weatherapi/locationforecast/2.0/documentation) - - Enkel å finne data fra ønsket sted, men bare en forecast, så finner ikke historiske data + - Enkel å finne data fra ønsket sted, men bare en forecast, så finner ikke historiske data. - [Vaer og klima](https://www.met.no/vaer-og-klima/klima-siste-150-ar) - - Mye historisk data, men hadde kun for regioner og ikke for byer slik vi ønsket + - Mye historisk data, men hadde kun for regioner og ikke for steder slik vi ønsket. Ettersom ingen av de fra MET funket etter vårt ønske, søkte vi videre på nettet, og kom over: - [OpenWeatherMap API](https://openweathermap.org/) @@ -70,7 +71,7 @@ Ettersom ingen av de fra MET funket etter vårt ønske, søkte vi videre på net - Det finnes også flere ulike API-er, som vil hjelpe oss å oppnå vår visjon. Blant annet: - [Current Data](https://openweathermap.org/current): for å hente ut data fra ønsket sted på nåværende tidspunkt. - [History API](https://openweathermap.org/history): for å hente data fra ønsket sted og tidsperiode (inntil 7 dager). - - [Statistic Historical Data](https://openweathermap.org/api/statistics-api): for å hente statistisk historisk data som kan brukes til regresjon. Den tar utganspunkt i all historisk data og oppsummerer det for hver dag i løpet av et år. + - [Statistic Historical Data](https://openweathermap.org/api/statistics-api): for å hente statistisk historisk data som kan brukes til regresjon. Den tar utganspunkt i all historisk data og oppsummerer det for hver dag i året. ##### Henting av data For å hente data fra OpenWeatherMap API-en har vi skrevet en funskjon som tar inn stedsnavn, startdato og sluttdato, den legger da ønskede verdier inn i url-en og henter data for ønsket sted og tidsperiode, sammen med API-key som er lagret i en env-fil og importert. @@ -80,9 +81,9 @@ Funksjonen er lagt inn i Juputer notebook filen, som spør brukeren etter input. ##### Skriving av data til fil Når dataen er hentet velger vi å skrive den over på en json-fil, som gjør det lettere å hente ut ønsket data senere. -Funksjonen tar inn data og ønsket filnavn, og sjekker om vi har mappen 'data', med en annen mappe 'output_stedsnavn'. Dersom vi ikke skulle ha de mappene, som er tilfellet da vi har lagt denne mappen i .gitignore for å unngå kopiering av individuelle test-data ol., vil funksjonen lage mappene og deretter skrive dataen til en json-fil med navnet 'data_{filnavn}.json. +Funksjonen tar inn data og ønsket filnavn, og sjekker om vi har mappen 'data', med en annen mappe `json/output_{notebook}`. Dersom vi ikke skulle ha de mappene, som er tilfellet da vi har lagt denne mappen i .gitignore for å unngå kopiering av individuelle test-data ol., vil funksjonen lage mappene og deretter skrive dataen til en json-fil med navnet `data_{filnavn}.json`. -Funksjonen returnerer en print setning når dataen er skrevet, og legger ved filpath +Funksjonen returnerer en print setning når dataen er skrevet, og legger ved filepath. ##### Hente data fra fil For å hente data fra json-fil, bruker vi pandas sin innebygde funksjon _read_json_, for deretter å lagra dataene i en pandas dataframe. @@ -91,9 +92,9 @@ For å hente data fra json-fil, bruker vi pandas sin innebygde funksjon _read_js Vi har hele tiden fokusert på å forstå dataen vi har, derfor har vi lagret den i en json fil for å lettere kunne lese ut hvilke verdier vi har, og hvilke vi kanskje ikke trenger. De kolonnene vi mener vi ikke trenger har vi da fjernet. Så har vi sjekket etter feil og mangler i dataen, både med "NaN" (Not a Number) verdier, manglende kolonner eller ekstremverdier. ##### Metoder for å identifisere og håndtere manglende data -Metoder vi har brukt  er for eksempel `pd.json_normalize`, `df.drop_duplicates` og `df.drop(columns = «name»)`. Ved `json.normalize` har vi fått konvertert dataene våre til en tabell, DataFrame, fordi det er lettere å manipulere. `df.drop_duplicates` bruker vi for å enkelt håndtere duplikatene i datasettet. Vi har også kolonner som inneholder informasjon som ikke er relevant til det vi ønsker å finne og da bruker vi `df.drop(column= «name»)` og setter inn kolonnenavnet i parentes bak, eksempel: `df = df.drop(columns = «base»)` eller `df = df.drop(columns = «visability»)`. Denne metoden er nyttig for å rydde opp i datasettet og håndtere fjerning av kolonner som ikke er relevant, og dermed blir det mer oversiktlig og ryddig å jobbe med. +Metoder vi har brukt er for eksempel `pd.json_normalize`, `df.drop_duplicates` og `df.drop(columns = «name»)`. Ved `json.normalize` har vi fått konvertert dataene våre til en tabell, DataFrame, fordi det er lettere å manipulere. `df.drop_duplicates` bruker vi for å enkelt håndtere duplikatene i datasettet. Vi har også kolonner som inneholder informasjon som ikke er relevant til det vi ønsker å finne og da bruker vi `df.drop(column= «name»)` og setter inn kolonnenavnet i parentes bak, eksempel: `df = df.drop(columns = «base»)` eller `df = df.drop(columns = «visability»)`. Denne metoden er nyttig for å rydde opp i datasettet og håndtere fjerning av kolonner som ikke er relevant, og dermed blir det mer oversiktlig og ryddig å jobbe med. -Vi har også brukt missingno.matrix for å visualisere hvilke kolonner som mangler data, før vi har brukt enten `fillna(0)` for å endre "NaN" verdier til 0, eller `fillna('obj.ffill())` for å bruke forrige lagret data. Noen steder har vi også brukt `interpolate(method='linear', limit_direction='both')` som "gjetter" en verdi basert på verdien før og etter, `limit_direction='both'` bidrar til at den ikke trenger verdier både ofran og bak for å gjette, men baserer seg bare på den ene verdien den eventuelt måtte ha. +Vi har også brukt missingno.matrix for å visualisere hvilke kolonner som mangler data, før vi har brukt enten `fillna(0)` for å endre "NaN" verdier til 0, eller `interpolate(method='linear', limit_direction='both')` som "gjetter" en verdi basert på verdien før og etter, `limit_direction='both'` bidrar til at den ikke trenger verdier både foran og bak for å gjette, men baserer seg bare på den ene verdien den eventuelt måtte ha. ##### List comprehensions I den ene koden til `statistic_data_notebook.ipynb` er et eksempel på hvor vi har brukt list comprehension for å manipulere data. Vi bruker den til å manipulere temperaturene til celsius og lagre det resultatet i en ny kolonne, `temp.mean_celsius`. Vi har gjort dette fordi den metoden er mer effektiv å bruke enn for eksempel en direkte for-løkke.  @@ -106,9 +107,9 @@ Pandas-syntaks kan være noe kompleks og da kan man for eksempel med sqldf, bruk Vi har brukt Pandas SQL spesielt i de ulike compare-notebookene, hvor det er lettere å hente ut data basert på de ulike stedene. Vi har også lagret SELECT-setningene i variabler, eks. for statistisk data som gjennomsnitt, max og min temperatur. Når vi senere plotter gjennomsnittene, kan vi bare hente ut de lagrede variablene tilhørende hvert sted. ##### Uregelmessigheter i dataene -Uregelmessigheter vi kan forvente å møte på er blant annet manglende verdier. For å håndtere disse kan vi bruke metoder som for eksempel `fillna()`, som fyller manglende verdier med en standardverdi. Eller så kan vi bruke `dropna()`, som fjerner radene med manglende verdi. Vi kan også møte på ufullstendige datoer eller datoer i ukjent format. Da kan vi bruke `pd.to_datetime()` for å sikre at datoene blir riktig konvertert til datetime format.  +Uregelmessigheter vi kan forvente å møte på er blant annet manglende verdier. For å håndtere disse kan vi bruke metoder som for eksempel `fillna(0)`, som fyller manglende verdier med en verdien 0. Eller så kan vi bruke `dropna()`, som fjerner radene med manglende verdi. Vi kan også møte på ufullstendige datoer eller datoer i ukjent format. Da kan vi bruke `pd.to_datetime()` for å sikre at datoene blir riktig konvertert til datetime format.  -Vi kan også møte ekstremverdier, som vi kan fjerne ved å sjekke om de er "uteliggere" ved å ligge mer enn tre standardavvik i fra gjennomsnittet. Da kan vi bruke verdien før med `fillna('obj.ffill()')` eller bruke interpolate linear metoden for å få den mest "smoothe" overgangen mellom manglende verdier. Da den "gjetter" seg frem til manglende verdier. +Vi kan også møte ekstremverdier, som vi kan fjerne ved å sjekke om de er "uteliggere" ved å ligge mer enn tre standardavvik i fra gjennomsnittet. Da kan vi bruke `.interpolate linear` metoden for å få den mest "smoothe" overgangen mellom manglende verdier. Da den "gjetter" seg frem til manglende verdier. #### Oppgave 4 - Dataanalyse @@ -118,13 +119,19 @@ For eksempel i `notebook_statistic_data.ipynb` har vi brukt Pandas til å beregn ##### Kan du gi et eksempel på hvordan du vil implementere en enkel statistisk analyse for å undersøke sammenhengen mellom to variabler i datasettet? Et eksempel på hvordan vi har implementert en enkel statistisk analyse for å undersøke sammenhengen mellom to variabler i datasettet er blant annet *scatterdiagram*. Vi har en linje som viser gjennomsnittstemperaturen og punkter som viser den faktiske temperaturene den dagen. Dette viser godt sammenheng og visualiserer sammenhengen mellom de to variablene på en oversiktelig måte. Scatterdiagramet gir innsikt i detaljene bak linjen til gjennomsnittet. +Vi har også lagd korrelasjonsmatriser ved hjelp av seaborn heatmaps. Den viser korrelasjonen koeffisienten mellom to variabler, altså sammenhengen, mellom de ulike variablene. + +Sammenhengene kan tolkes slik: +- +1 - sterk positiv sammenheng. +- 0 - ingen sammenheng. +- -1 - sterk negativ sammengen + +For å lese sammenhengen, kan man i korrelasjonsmatrisen, finne en variabel vertikalt og en variabel horisontalt. I ruten som treffer begge disse variablene, finner vi korrelasjons koeffisienten. Som da indikerer sammenhengen. ##### Håndtering av skjevheter Vi har møtt på noen skjevheter som for eksempel at temperaturen har vært urealistisk i perioder, for å rydde opp i dette har vi sjekket uteliggere, altså sjekket om verdiene ligger mer enn 3 standardavvik fra gjennomsnittet. Om en verdi ligger mer enn 3 standardavvik over eller under gjennomsnittet, har vi brukt `interpolate(method='linear', limit_direction='both')`, som "gjetter" verdien basert på veriden før og etter. #### Visualiseringer av funnene våre -Vi har laget mange grafer som viser både temperatur, nedbør i både regn og snø, og vindmålinger for å visuelt formidle funnene våre. Disse grafene kan du finne i våre notebooks å se visuelt selv, men vil her gi mer detaljert dokumentasjon for visualiserings valgene våre. - I dette prosjektet har vi valgt å bruke ulike typer diagrammer for å visualisere værdata, spesielt temperatur og nedbør. Notebooksene våre inneholder ulike egenskaper, blant annet værdata for ulike tidsperioder. Vi har time for time av en valgt dag og sted, periode over flere dager (dager og sted blir valgt av bruker) og for et år (her velger bruker kun sted). Målet har vært å gjøre dataene forståelige og lett sammenlignbare for brukeren, samtidig som det gir en nøyaktig og tydelig fremstilling. Ettersom temperatur er en kontinuerlig variabel som endrer seg gradvis over tid har vi valgt å bruke linjediagram for å visualisere temperaturdataen. Vi gikk for dette type diagrammet for temperatur fordi det viser utviklingen på en jevn og oversiktelig måte og gjør det lett å følge temperaturens stigning og fall. I tillegg, spesielt på diagrammet for et års periode, kan det gi brukeren en god forståelse av trender og sesongvariasjoner da x-aksen vår er månedene i året. Linjediagrammet gjør det også lettere enn for eksempel søylediagram, å lese mønstre og identifisere tidsperioder med veldig høy eller lav temperatur. @@ -133,8 +140,12 @@ Søylediagram derimot følte vi var det beste alternative for visualisering av n Scatterplot er et annet diagram vi har brukt. Dette mente vi var best egnet blant annet til når vi skulle visualisere temperaturverdiene for en dag opp mot gjennomsnittstemperaturen den dagen. Den gir en tydelig og enkel oversikt med punkter for temperaturen per time for en dag og bruker kan lett lese av diagrammet om punktene er over eller under gjennomsnittsstreken. Diagrammet gir en tydelig fremstilling av variasjonen i temperaturen i løpet av dagen og hvordan enkelttimer skiller seg fra resten og gjennomsnittet. Scatterplot egner seg godt her fordi det viser detaljene i hver enkelt måling, samtidig som det gir rom for å indikere trender på en presis måte uten å koble punktene sammen. -Vi har også lagt til en notebook med interaktive visualiseringer. Denne notebooken har nokså lik kode som `notebook_one_day_data`, men på den er det ikke interaktivt, noe som `notebook_interactive_data` tilbyr. Dette for at brukeren selv kan få bestemme visualiseringen de selv synes er best og kan få endre litt på effekter som for eksempel farge, scatterplotsstørrelse, om rutenett og gjennomsnitt er med eller ikke. +Vi har også lagt til en notebook med interaktive visualiseringer. Denne notebooken har nokså lik kode som `notebook_one_day_data`, men på den er det ikke interaktivt, noe som `notebook_interactive_data` tilbyr. Dette for at brukeren selv kan få bestemme visualiseringen de selv synes er best og kan få endre litt på effekter som for eksempel farge, scatterplotsstørrelse, om rutenett og gjennomsnitt er med eller ikke. +I tillegg bruker vi Seaborn heatmaps for å lage en korrelasjonsmatrise, og indikere sammenhengene mellom ulike variabler. Her har vi valgt en fargepalett som fungerer slik: +- +1 - Sterk positiv sammenheng. Rød farge. +- 0 - Ingen sammenheng. Hvit farge. +- -0 - Sterk negativ sammenheng. Blå farge. #### Oppgave 5 - Visualisering @@ -143,7 +154,7 @@ Vi har laget visualiseringer for temperatur og andre værforhold både for dagen ##### Hvordan kan Matplotlib brukes til å forbedre forståelsen av de analyserte dataene? -Vi har blant annet brukt` matplotlib.dates (as mdates)` og `matplotlib.pyplot (as plt)` for å få et mer oversiktelig diagram av de analyserte dataene. Funksjoner vi har brukt er for eksempel `plt.gca` for å formatere aksene sin datetime til månedlig. Denne har vært fin å bruke til oversiktelig tilpassing av aksene. Vi har også flere steder brukt `plt.title`, `plt.grid()` og `plt.legend` for å få mer forklaringer og oversiktelighet på diagrammene våre og for å få de til å se like ut slik at det er enkelt for brukeren å sette seg inn i grafene uansett hvilken notebook. Andre eksempler på matplotlib vi har brukt er `plt.savefig` for å lagre til en fil som PNG, slik man enkelt kan finne tilbake til det. +Vi har blant annet brukt `matplotlib.dates as mdates` og `matplotlib.pyplot as plt` for å få et mer oversiktelig diagram av de analyserte dataene. Funksjoner vi har brukt er for eksempel `plt.gca` for å formatere aksene sin datetime til månedlig. Denne har vært fin å bruke til oversiktelig tilpassing av aksene. Vi har også flere steder brukt `plt.title`, `plt.grid()` og `plt.legend` for å få mer forklaringer og oversiktelighet på diagrammene våre og for å få de til å se like ut slik at det er enkelt for brukeren å sette seg inn i grafene uansett hvilken notebook. Andre eksempler på matplotlib vi har brukt er `plt.savefig` for å lagre til en fil som PNG, slik man enkelt kan finne tilbake til det. ##### Hvordan vil du håndtere og visualisere manglende data i grafene dine for å sikre at de fortsatt er informative? @@ -162,12 +173,15 @@ Vi mener effektiviteten i visualiseringene våre er svært god fordi grafene og #### Oppgave 6 - Prediktiv analyse ##### Lag minst tre forskjellige typer visualiseringer (f.eks. linjediagrammer, søylediagrammer og scatterplots) for å representere endringer i eksempelvis luftkvalitet og temperaturdata over tid. Forklar valget av visualiseringstype for hver graf. -Vi har laget linjediagrammer, søylediagrammer og scatterplots. Alle tre typer kan man finne i n`otebook_one_day_data.ipynb`, i `notebook_one_week.ipynb` kan man finne søylediagram og linjediagram. I `notebook_statistic_data.ipynb` kan man finne linjediagram og søylediagram. -Linjediagram ble brukt i de fleste notebooks fordi det passer godt til å vise utvikling over tid, spesielt for temperaturen. Søylediagram ble brukt fordi det gjør det enkelt å visuelt se hvor mye feks. regn eller snø det var i den perioden. Scatterplots ble brukt for å visuelt vise hvor mye temperaturen hver time er over eller under gjennomsnittet for dagens temperatur. +Vi har laget linjediagrammer, søylediagrammer, scatterplots og heatmaps. Alle fire typer kan man finne i `notebook_one_day_data.ipynb`, i `notebook_one_week.ipynb` kan man finne søylediagram og linjediagram. I `notebook_statistic_data.ipynb` kan man finne linjediagram og søylediagram. + +Linjediagram ble brukt i de fleste notebooks fordi det passer godt til å vise utvikling over tid, spesielt for temperaturen. Søylediagram ble brukt fordi det gjør det enkelt å visuelt se hvor mye feks. regn eller snø det var i den perioden. Scatterplots ble brukt for å visuelt vise hvor mye temperaturen hver time er over eller under gjennomsnittet for dagens temperatur. + +Heatmaps blir brukt for å lage en korrelasjonsmatrise. Det gjør det enkelt å se sammenheng og styrken i det ulike rutene. Ved at vi har valgt en fargepalett som også gir mening, der rød er positiv, blå er negativ og hvit er null. ##### Implementer visualiseringer ved hjelp av Matplotlib og Seaborn. Inkluder tilpassede akser, titler, og fargepaletter for å forbedre lesbarheten og estetikk. -Dette har vi brukt Matplotlib til og visualiseringene kan du finne i notebooksene. +Vi har stort sett brukt matplotlib i alle notebook-ene. Vi har også brukt Seaborn til heatmaps for å lage en korrelasjonsmatrise. ##### Demonstrer hvordan manglende data håndteres i visualiseringene. Lag en graf som viser hvordan manglende verdier påvirker datatrender, og diskuter hvordan dette kan påvirke tolkningen av dataene. @@ -175,4 +189,4 @@ Visualiseringen finner man i notebook-ene. Vi har identifisert manglende data og ##### Skriv en kort evaluering av de utviklede visualiseringene. Diskuter hvilke visualiseringer som var mest effektive for å formidle informasjon, og hvorfor. Reflekter over tilbakemeldinger fra medstudenter eller veileder. -Linjegrafene viste seg å være de mest effektive når det gjaldt å formidle utvikling over tid, spesielt for å identifisere trender og mønstre i dataene. Kombinasjonen av tydelige akser, fargebruk og merking av nøkkelpunkter gjorde det enkelt å tolke informasjonen raskt. I tillegg fungerte kombinasjonsgrafene (linjediagram og stolpediagram) godt for å sammenligne flere dataserier parallelt, som f.eks. temperatur og nedbør. \ No newline at end of file +Linjegrafene viste seg å være de mest effektive når det gjaldt å formidle utvikling over tid, spesielt for å identifisere trender og mønstre i dataene. Kombinasjonen av tydelige akser, fargebruk og merking av nøkkelpunkter gjorde det enkelt å tolke informasjonen raskt. I tillegg fungerte kombinasjonsgrafene (linjediagram og stolpediagram) godt for å sammenligne flere dataserier parallelt, som f.eks. temperatur og nedbør. Korrelasjonsmatrisene er også en effektiv visualisering for å vise sammenhengen mellom de ulike variablene. Det er lettere å forstå fargene, enn å bare skulle lese tallene. \ No newline at end of file diff --git a/data/README.md b/data/README.md index 29c23c4..70e5d6f 100644 --- a/data/README.md +++ b/data/README.md @@ -2,15 +2,36 @@ Her vil det opprettes ulike mapper som et resultat av dataene som lagres gjennom kjøringen av de ulike notebookene. -Funksjonen er bygd slik at den først sjekker om det eksisterer en mappe, før den eventuelt lager. Alle mapper som starter med output (altså output data) er lagt til i `.gitignore`. Dette for å ikke laste opp masse unødvendig til github, men også for at brukere ikke 'deler' data. Mine kjøringer vil være mine, og dine vil kun vises hos deg. +Funksjonen er bygd slik at den først sjekker om det eksisterer en mappe, før den eventuelt lager. Mappen er delt opp i `data/figures` og `data/json`, dette for å lettere skille mellom dataen fra de ulike notebook-ene. + +Alle mapper som starter med output er lagt til i `.gitignore`. Dette for å ikke laste opp masse unødvendig til github, men også for at brukere ikke 'deler' data. Mine kjøringer vil være mine, og dine vil kun vises hos deg. Det er også en test-mappe, her har vi lagret noe data hentet med API-en, som inneholder feil og mangler. Denne vil bli brukt i `notebook_regression.ipynb` for å vise at funksjonene våre for renskning fungerer, før dataen blir splittet og trener opp en regresjonsmodell. -Dette er eksempel på noen av mappene: -- `test` inneholder forhåndslagret data for bruk i `notebook_regression.ipynb` -- `output_current_data` lagrer dataen for ønsket sted, kjørt fra `notebook_current_data.ipynb` -- `output_fig` lagrer grafer, kjørt fra `notebook_statistic_data.ipynb` -- `output_record` lagrer rekord data fra ønsket sted, kjørt fra `notebook_statistic_data.ipynb` -- `output_statistikk` lagrer dataen for ønsket sted, kjørt fra`notebook_statistic_data.ipynb` -- `output_sammenligning_dag` lagrer data for to ønsket steder for dags sammenligning, kjørt fra `notebook_compare_one_day_data.ipynb` -- `output_fig_sammenligning` lagrer sammenligningsgrafer, kjørt fra de ulike 'compare' notebookene \ No newline at end of file +Dette er mappenestrukturen: +`data/figures`: +- `output_fig_compare_one_day` +- `output_fig_compare_one_week` +- `output_fig_compare_statistic` +- `output_fig_interactive` +- `output_fig_one_day` +- `output_fig_one_week` +- `output_fig_statistic` + +Figurene som lagres vil være blant annet: +- Værdata (temperatur, nedbør og vind) +- Temperatur (gjennomsnitt, maks og min) +- Korrelasjonsmatriser + +`data/json`: +- `output_compare_one_day` +- `output_compare_one_week` +- `output_compare_statistic` +- `output_current` +- `output_interactive` +- `output_one_day` +- `output_one_week` +- `output_records` +- `output_statistic` + +Data som lagres er json-filer med data hentet fra API-en. Og i `output_records` vil det lagres rekord verdier regnet fra `notebook_statistic_data`. \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 008fb57..ed90308 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,9 @@ # Documents -KI - declaration + +### Refleksjonsnotat +[Refleksjonsnotat](./refleksjonsnotat.md), her har vi snakket om vår erfaring av prosjektet, hva vi har lært om både programmering og samarbeid. Litt problemer vi har møtt på veien, og litt refleksjon rundt hva om kunne vært gjort annerledes. Men det viktigste er vår refleksjon over egen læring. + +### KI - declaration Første deklarasjon: [Se KI-deklarasjonen](./KI_one_declaration.pdf) diff --git a/notebooks/README.md b/notebooks/README.md index 45bd46a..f1bb9ca 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -16,7 +16,9 @@ Her finnes informasjon om de ulike notebookene og deres innhold. Denne notebooken henter data for ønsket periode (inntil 7-dager) fra to steder, og sammenglinger verdiene. Dataen fra begge stedene lagres i samme json-fil, og hentes ut ved hjelp av Pandas SQL. - [Compare statistic data](notebook_compare_statistic_data.ipynb) Denne notebooken henter data fra en API som samler alle historiske data for to ønskede steder, og sammenglinger verdiene. Dataen fra begge stedene lagres i samme json-fil, og hentes ut ved hjelp av Pandas SQL. +- [Interactive](notebook_interactive) + Denne notebooken henter data for ønsket dag og sted, skriver til fil. Lager en interaktiv visualisering hvor bruker kan endre på dot-størrelsen, farger og velge om rutenett og gjennomsnittslinjen skal være synlig. - [Regression](notebook_regression.ipynb) - Denne notebooken henter data fra et test-fil, hvor vi vet det er mangler, og kjører rensking av dataen før den splittes og trener opp en regresjonsmodell. Du kan også legge inn ulike verdier til variablene for å se regresjonen i live-action. + Denne notebooken henter data fra et test-fil, hvor vi vet det er mangler, og kjører rensking av dataen før den splittes og trener opp en regresjonsmodell. Bruker kan også legge inn ulike verdier til variablene for å se regresjonen i live-action. - [Test notebook](test_notebook.ipynb) Dette er bare en test notebook, for å se om venv funker og det å importere funksjoner fra packager. diff --git a/resources/README.md b/resources/README.md index 6be3d10..b4f0496 100644 --- a/resources/README.md +++ b/resources/README.md @@ -19,10 +19,19 @@ For å benytte denne API-en må man lage en bruker, og som student for man tilga ### Possible API - **API from openweathermap** -[API_OPEN_WEATHER_MAP](https://openweathermap.org/) + - [Current Data](https://openweathermap.org/current): for å hente ut data fra ønsket sted på nåværende tidspunkt. + - [History API](https://openweathermap.org/history): for å hente data fra ønsket sted og tidsperiode (inntil 7 dager). + - [Statistic Historical Data](https://openweathermap.org/api/statistics-api): for å hente statistisk historisk data som kan brukes til regresjon. Den tar utganspunkt i all historisk data og oppsummerer det for hver dag i året. - **API from meterologisk institutt** -[API_FROST](https://frost.met.no/index.html) + - [Airqualityforecast](https://api.met.no/weatherapi/airqualityforecast/0.1/documentation) + Vanskelig å kunne hente data fra ønsket sted, komplisert request med masse data. + - [Frost](https://frost.met.no/index.html) + Vanskelig å kunne hente data fra ønsket sted, stasjonsbasert. + - [Locationforecast](https://api.met.no/weatherapi/locationforecast/2.0/documentation) + Enkel å finne data fra ønsket sted, men bare en forecast, så finner ikke historiske data. + - [Vaer og klima](https://www.met.no/vaer-og-klima/klima-siste-150-ar) + Mye historisk data, men hadde kun for regioner og ikke for steder slik vi ønsket. ### Possible dataset - **Natural Disasters:** diff --git a/src/README.md b/src/README.md index b1fb22f..f3948f1 100644 --- a/src/README.md +++ b/src/README.md @@ -18,6 +18,6 @@ Her kommer en kjapp forklaring av de ulike filene og deres funksjoner: - Konverterer grader fra kelvin til celsius - Sjekker at ønskede kolonner eksisterer i datasettet - Fyller "NaN" verdier med 0, i ønskede kolonner - - Fjerner alle uønskede kolonner med samme endelse (notebook_statistic_data.ipynb) - - Henter rekord målinger (notebook_statistic_data.ipynb) + - Fjerner alle uønskede kolonner med samme endelse (`notebook_statistic_data.ipynb`) + - Henter rekord målinger (`notebook_statistic_data.ipynb`) - `test_module.py` en test funksjon for å sjekke at venv og implementering til notebook funker som det skal. From a541415beecc2e0ffa2894ebd9300e2e7cfe3b9d Mon Sep 17 00:00:00 2001 From: toravest Date: Sun, 25 May 2025 18:27:27 +0200 Subject: [PATCH 19/21] add median, also plot, and standard deviation --- notebooks/notebook_compare_one_day_data.ipynb | 41 +++++++++++++++---- .../notebook_compare_one_week_data.ipynb | 33 ++++++++++++--- .../notebook_compare_statistic_data.ipynb | 31 ++++++++++++-- notebooks/notebook_interactive_data.ipynb | 18 +++++--- notebooks/notebook_one_day_data.ipynb | 20 ++++++--- notebooks/notebook_one_week_data.ipynb | 23 +++++++---- notebooks/notebook_statistic_data.ipynb | 31 +++++++++++--- 7 files changed, 158 insertions(+), 39 deletions(-) diff --git a/notebooks/notebook_compare_one_day_data.ipynb b/notebooks/notebook_compare_one_day_data.ipynb index 2f04f25..4c06a91 100644 --- a/notebooks/notebook_compare_one_day_data.ipynb +++ b/notebooks/notebook_compare_one_day_data.ipynb @@ -88,7 +88,9 @@ "metadata": {}, "source": [ "### Velg andre sted til sammenligningen\n", - "Velg det andre stedet som skal brukes i sammenligningen, fortsatt begrenset til Norge." + "Velg det andre stedet som skal brukes i sammenligningen, fortsatt begrenset til Norge.\n", + "\n", + "Det er vanskelig å sammenligne det samme stedet. Derfor har vi lagt inn en while-løkke som sjekker om sted 2 er likt sted 1, og kjører frem til de er forskjellige." ] }, { @@ -132,7 +134,7 @@ "\n", "Vi samler dataen for begge stedene og skriver de til en json fil.\n", "\n", - "Skriv inn navn for til filen du vil lagre med dataen.\n", + "Skriv inn navn til filen du vil lagre med dataen.\n", "\n", "Eks. filnavn: test\n", "\n", @@ -225,9 +227,11 @@ "metadata": {}, "source": [ "### Viser temperaturen\n", - "Vi bruker pandas SQL for å hente ut temperaturen for begge stedene, og lagrer de i en tabell. Ved hjelp av 'pivot' , en innebgyd funksjon for å rotere tabeller, setter vi den opp for bedre lesbarhet, ved å sette begge byene ved siden av hverandre og 'dt' som index. Dette gjør det lettere å sammenligne temperaturen for begge stedene til samme tid.\n", + "Vi bruker pandas SQL for å hente ut temperaturen for begge stedene, og lagrer de i en tabell. Ved hjelp av 'pivot' , en innebygd funksjon for å rotere tabeller, setter vi den opp for bedre lesbarhet, ved å sette begge byene ved siden av hverandre og 'dt' som index. Dette gjør det lettere å sammenligne temperaturen for begge stedene til samme tid.\n", + "\n", + "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur for begge stedene. Senere kan vi bare skrive en SELECT setning til denne variabelen, for å eksepelhvis hente ut gjennomsnitts data for sted 1.\n", "\n", - "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur for begge stedene. Senere kan vi bare skrive en SELECT setning til denne variabelen, for å eksepelhvis hente ut gjennomsnitts data for sted 1." + "Det å regne ut median og standardavvik er ikke innebygd i SQL, i motsetning til gjennomsnitt, maks og min. Derfor regner vi ut disse verdiene manuelt. Vi henter temperatur data fra, grupperer dataen basert på city_name, og bruker den innebygde pandas funksjonen `median()` og `std()`, for hendholdsvis median og standardavvik. Siden verdiene grupperes på city_name, blir det indeksen med medianverdi som verdi. Derfor bruker vi `.reset_index()` for å nullstille og gjøre city_name til en kolonne, som bruker til å koble de to tabellene samen, med funksjonen `merge()`." ] }, { @@ -254,11 +258,26 @@ "\n", "# Extract and stores temperatur data for each city using pandas sql\n", "stat_temp_per_city = sqldf('''\n", - " SELECT city, city_name, AVG(`main.temp`) AS avg_temp, MAX(`main.temp`) AS max_temp, MIN(`main.temp`) AS min_temp\n", + " SELECT city, city_name, ROUND(AVG(`main.temp`), 2) AS avg_temp, ROUND(MAX(`main.temp`), 2) AS max_temp, ROUND(MIN(`main.temp`), 2) AS min_temp\n", " FROM both_cities_df\n", " GROUP BY city_name\n", " ''')\n", "\n", + "# Median and standard deviation cant be calculated with pandasql, therefor we need to add it later\n", + "# We calculate the median, based on the city_name, and reset city_name from index to a column\n", + "median_temp = temp_data.groupby('city_name')['temp'].median().reset_index().round(2)\n", + "# Decides the column name\n", + "median_temp.columns = ['city_name', 'median_temp']\n", + "# Merge the new column into stat_temp_per city\n", + "stat_temp_per_city = stat_temp_per_city.merge(median_temp, on='city_name')\n", + "\n", + "# We calculate the standard deviation, based on the city_name, and reset city_name from index to a column\n", + "stdev_temp = temp_data.groupby('city_name')['temp'].std().reset_index().round(2)\n", + "# Decides the column name\n", + "stdev_temp.columns = ['city_name', 'stdev_temp']\n", + "# Merge the new column into stat_temp_per city\n", + "stat_temp_per_city = stat_temp_per_city.merge(stdev_temp, on='city_name')\n", + "\n", "# Display the temperatur stats for both cities\n", "display(stat_temp_per_city)" ] @@ -414,6 +433,10 @@ "temp_mean_city_1 = sqldf('''SELECT avg_temp FROM stat_temp_per_city WHERE city = \"city_1\"''').iloc[0, 0]\n", "temp_mean_city_2 = sqldf('''SELECT avg_temp FROM stat_temp_per_city WHERE city = \"city_2\"''').iloc[0, 0]\n", "\n", + "# Getting the median for both cities\n", + "temp_median_city_1 = sqldf('''SELECT median_temp FROM stat_temp_per_city WHERE city = \"city_1\"''').iloc[0, 0]\n", + "temp_median_city_2 = sqldf('''SELECT median_temp FROM stat_temp_per_city WHERE city = \"city_2\"''').iloc[0, 0]\n", + "\n", "# Extract rain values for both cities\n", "# Because pandas sql returnes the value as a dataframe, we need to get the actual value (all rows, first column)\n", "city_1_rain = sqldf('''SELECT `rain.1h` FROM both_cities_df WHERE city = \"city_1\"''').iloc[:,0]\n", @@ -436,13 +459,15 @@ "# Set the title for the whole plot, above the upper plot\n", "ax1.set_title(f'Weather compare for {city_1} and {city_2} ({date}) ')\n", "\n", - "# Plots the temperature for city_1, with mean temperature\n", + "# Plots the temperature for city_1, with mean temperature and median temperature\n", "ax1.plot(x_axis, temp_city_1, color='#008080', label=f'Temperature {city_1}')\n", "ax1.axhline(temp_mean_city_1, color='#008080', linestyle='dashed', alpha=0.7, label=f'Mean Temperature {city_1}')\n", + "ax1.axhline(temp_median_city_1, color='#008080', linestyle='dotted', alpha=0.5, label=f'Median Temperature {city_1}')\n", "\n", - "# Plots the temperature for city_2s, with mean temperature\n", + "# Plots the temperature for city_2s, with mean temperature and median temperature\n", "ax1.plot(x_axis, temp_city_2, color='#FFA500', label=f'Temperature {city_2}')\n", - "ax1.axhline(temp_mean_city_2, color='#FFA500', linestyle='dashed', alpha=0.7, label=f'Mean Temperature {city_2}')\n", + "ax1.axhline(temp_mean_city_2, color=\"#B59B6A\", linestyle='dashed', alpha=0.7, label=f'Mean Temperature {city_2}')\n", + "ax1.axhline(temp_median_city_2, color='#B59B64', linestyle='dotted', alpha=0.5, label=f'Median Temperature {city_2}')\n", "\n", "# Design the y-axis for Temperature\n", "ax1.set_ylabel(\"Temperature (°C)\")\n", diff --git a/notebooks/notebook_compare_one_week_data.ipynb b/notebooks/notebook_compare_one_week_data.ipynb index b8b7b41..a81168e 100644 --- a/notebooks/notebook_compare_one_week_data.ipynb +++ b/notebooks/notebook_compare_one_week_data.ipynb @@ -246,9 +246,11 @@ "metadata": {}, "source": [ "### Viser temperaturen\n", - "Vi bruker pandas SQL for å hente ut temperaturen for begge stedene, og lagrer de i en tabell. Ved hjelp av 'pivot' , en innebgyd funksjon for å rotere tabeller, setter vi den opp for bedre lesbarhet, ved å sette begge byene ved siden av hverandre og 'dt' som index. Dette gjør det lettere å sammenligne temperaturen for begge stedene til samme tid.\n", + "Vi bruker pandas SQL for å hente ut temperaturen for begge stedene, og lagrer de i en tabell. Ved hjelp av 'pivot' , en innebygd funksjon for å rotere tabeller, setter vi den opp for bedre lesbarhet, ved å sette begge byene ved siden av hverandre og 'dt' som index. Dette gjør det lettere å sammenligne temperaturen for begge stedene til samme tid.\n", "\n", - "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur for begge stedene. Senere kan vi bare skrive en SELECT setning til denne variabelen, for å eksepelhvis hente ut gjennomsnitts data for sted 1." + "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur for begge stedene. Senere kan vi bare skrive en SELECT setning til denne variabelen, for å eksepelhvis hente ut gjennomsnitts data for sted 1.\n", + "\n", + "Det å regne ut median og standardavvik er ikke innebygd i SQL, i motsetning til gjennomsnitt, maks og min. Derfor regner vi ut disse verdiene manuelt. Vi henter temperatur data fra, grupperer dataen basert på city_name, og bruker den innebygde pandas funksjonen `median()` og `std()`, for hendholdsvis median og standardavvik. Siden verdiene grupperes på city_name, blir det indeksen med medianverdi som verdi. Derfor bruker vi `.reset_index()` for å nullstille og gjøre city_name til en kolonne, som bruker til å koble de to tabellene samen, med funksjonen `merge()`." ] }, { @@ -276,11 +278,26 @@ "\n", "# Extract and stores temperatur data for each city using pandas sql\n", "stat_temp_per_city = sqldf('''\n", - " SELECT city, city_name, AVG(`main.temp`) AS avg_temp, MAX(`main.temp`) AS max_temp, MIN(`main.temp`) AS min_temp\n", + " SELECT city, city_name, ROUND(AVG(`main.temp`), 2) AS avg_temp, ROUND(MAX(`main.temp`), 2) AS max_temp, ROUND(MIN(`main.temp`), 2) AS min_temp\n", " FROM both_cities_df\n", " GROUP BY city_name\n", " ''')\n", "\n", + "# Median and standard deviation cant be calculated with pandasql, therefor we need to add it later\n", + "# We calculate the median, based on the city_name, and reset city_name from index to a column\n", + "median_temp = temp_data.groupby('city_name')['temp'].median().reset_index().round(2)\n", + "# Decides the column name\n", + "median_temp.columns = ['city_name', 'median_temp']\n", + "# Merge the new column into stat_temp_per city\n", + "stat_temp_per_city = stat_temp_per_city.merge(median_temp, on='city_name')\n", + "\n", + "# We calculate the standard deviation, based on the city_name, and reset city_name from index to a column\n", + "stdev_temp = temp_data.groupby('city_name')['temp'].std().reset_index().round(2)\n", + "# Decides the column name\n", + "stdev_temp.columns = ['city_name', 'stdev_temp']\n", + "# Merge the new column into stat_temp_per city\n", + "stat_temp_per_city = stat_temp_per_city.merge(stdev_temp, on='city_name')\n", + "\n", "# Display the temperatur stats for both cities\n", "display(stat_temp_per_city)" ] @@ -446,6 +463,10 @@ "temp_mean_city_1 = sqldf('''SELECT avg_temp FROM stat_temp_per_city WHERE city = \"city_1\"''').iloc[0, 0]\n", "temp_mean_city_2 = sqldf('''SELECT avg_temp FROM stat_temp_per_city WHERE city = \"city_2\"''').iloc[0, 0]\n", "\n", + "# Getting the median for both cities\n", + "temp_median_city_1 = sqldf('''SELECT median_temp FROM stat_temp_per_city WHERE city = \"city_1\"''').iloc[0, 0]\n", + "temp_median_city_2 = sqldf('''SELECT median_temp FROM stat_temp_per_city WHERE city = \"city_2\"''').iloc[0, 0]\n", + "\n", "# Extract rain values for both cities\n", "# Because pandas sql returnes the value as a dataframe, we need to get the actual value (all rows, first column)\n", "city_1_rain = sqldf('''SELECT `rain.1h` FROM both_cities_df WHERE city = \"city_1\"''').iloc[:,0]\n", @@ -468,13 +489,15 @@ "# Set the title for the whole plot, above the upper plot\n", "ax1.set_title(f'Weather compare for {city_1} and {city_2} ({start_date} to {end_date}) ')\n", "\n", - "# Plots the temperature for city_1, with mean temperature\n", + "# Plots the temperature for city_1, with mean temperature and median temperature\n", "ax1.plot(x_axis, temp_city_1, color='#008080', label=f'Temperature {city_1}')\n", "ax1.axhline(temp_mean_city_1, color='#008080', linestyle='dashed', alpha=0.7, label=f'Mean Temperature {city_1}')\n", + "ax1.axhline(temp_median_city_1, color='#008080', linestyle='dotted', alpha=0.5, label=f'Median Temperature {city_1}')\n", "\n", - "# Plots the temperature for city_2s, with mean temperature\n", + "# Plots the temperature for city_2s, with mean temperature and median temperature\n", "ax1.plot(x_axis, temp_city_2, color='#FFA500', label=f'Temperature {city_2}')\n", "ax1.axhline(temp_mean_city_2, color='#FFA500', linestyle='dashed', alpha=0.7, label=f'Mean Temperature {city_2}')\n", + "ax1.axhline(temp_median_city_2, color='#FFA500', linestyle='dotted', alpha=0.5, label=f'Median Temperature {city_2}')\n", "\n", "# Design the y-axis for Temperature\n", "ax1.set_ylabel(\"Temperature (°C)\")\n", diff --git a/notebooks/notebook_compare_statistic_data.ipynb b/notebooks/notebook_compare_statistic_data.ipynb index 1152110..467db6c 100644 --- a/notebooks/notebook_compare_statistic_data.ipynb +++ b/notebooks/notebook_compare_statistic_data.ipynb @@ -211,9 +211,11 @@ "metadata": {}, "source": [ "### Viser temperaturen\n", - "Vi bruker pandas SQL for å hente ut temperaturen for begge stedene, og lagrer de i en tabell. Ved hjelp av 'pivot' , en innebgyd funksjon for å rotere tabeller, setter vi den opp for bedre lesbarhet, ved å sette begge byene ved siden av hverandre og en sammenslåing av kolonnene måned og dag ('month_day') som index. Dette gjør det lettere å sammenligne temperaturen for begge stedene til samme tid.\n", + "Vi bruker pandas SQL for å hente ut temperaturen for begge stedene, og lagrer de i en tabell. Ved hjelp av 'pivot' , en innebygd funksjon for å rotere tabeller, setter vi den opp for bedre lesbarhet, ved å sette begge byene ved siden av hverandre og en sammenslåing av kolonnene måned og dag ('month_day') som index. Dette gjør det lettere å sammenligne temperaturen for begge stedene til samme tid.\n", "\n", - "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur for begge stedene. Senere kan vi bare skrive en SELECT setning til denne variabelen, for å eksepelhvis hente ut gjennomsnitts data for sted 1." + "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur for begge stedene. Senere kan vi bare skrive en SELECT setning til denne variabelen, for å eksepelhvis hente ut gjennomsnitts data for sted 1.\n", + "\n", + "Det å regne ut median og standardavvik er ikke innebygd i SQL, i motsetning til gjennomsnitt, maks og min. Derfor regner vi ut disse verdiene manuelt. Vi henter temperatur data fra, grupperer dataen basert på city_name, og bruker den innebygde pandas funksjonen `median()` og `std()`, for hendholdsvis median og standardavvik. Siden verdiene grupperes på city_name, blir det indeksen med medianverdi som verdi. Derfor bruker vi `.reset_index()` for å nullstille og gjøre city_name til en kolonne, som bruker til å koble de to tabellene samen, med funksjonen `merge()`." ] }, { @@ -265,6 +267,21 @@ " GROUP BY city_name\n", " ''')\n", "\n", + "# Median and standard deviation cant be calculated with pandasql, therefor we need to add it later\n", + "# We calculate the median, based on the city_name, and reset city_name from index to a column\n", + "median_temp = temp_data.groupby('city_name')['temp'].median().reset_index().round(2)\n", + "# Decides the column name\n", + "median_temp.columns = ['city_name', 'median_temp']\n", + "# Merge the new column into stat_temp_per city\n", + "stat_temp_per_city = stat_temp_per_city.merge(median_temp, on='city_name')\n", + "\n", + "# We calculate the standard deviation, based on the city_name, and reset city_name from index to a column\n", + "stdev_temp = temp_data.groupby('city_name')['temp'].std().reset_index().round(2)\n", + "# Decides the column name\n", + "stdev_temp.columns = ['city_name', 'stdev_temp']\n", + "# Merge the new column into stat_temp_per city\n", + "stat_temp_per_city = stat_temp_per_city.merge(stdev_temp, on='city_name')\n", + "\n", "# Display the temperatur stats for both cities\n", "display(stat_temp_per_city)" ] @@ -297,6 +314,10 @@ "temp_mean_city_1 = sqldf('''SELECT avg_temp FROM stat_temp_per_city WHERE city = \"city_1\"''').iloc[0, 0]\n", "temp_mean_city_2 = sqldf('''SELECT avg_temp FROM stat_temp_per_city WHERE city = \"city_2\"''').iloc[0, 0]\n", "\n", + "# Getting the median for both cities\n", + "temp_median_city_1 = sqldf('''SELECT median_temp FROM stat_temp_per_city WHERE city = \"city_1\"''').iloc[0, 0]\n", + "temp_median_city_2 = sqldf('''SELECT median_temp FROM stat_temp_per_city WHERE city = \"city_2\"''').iloc[0, 0]\n", + "\n", "# Extract precipitation values for both cities\n", "# Because pandas sql returnes the value as a dataframe, we need to get the actual value (all rows, first column)\n", "precipitation_city_1 = sqldf('''SELECT `precipitation.mean` FROM both_cities_df WHERE city = \"city_1\"''').iloc[:,0]\n", @@ -319,9 +340,14 @@ "# Add marker at 0 temperature\n", "ax1.axhline(y=0, color='black', linewidth=1.5)\n", "\n", + "# Plotting the mean temperature for both cities\n", "ax1.axhline(y=temp_mean_city_1, color='#008080', linestyle='dashed', alpha=0.7, label=f'Mean Temperature {city_1}')\n", "ax1.axhline(y=temp_mean_city_2, color='#FFA500', linestyle='dashed', alpha=0.7, label=f'Mean Temperature {city_2}')\n", "\n", + "# Plotting the median temperature for both cities\n", + "ax1.axhline(temp_median_city_1, color='#008080', linestyle='dotted', alpha=0.5, label=f'Median Temperature {city_1}')\n", + "ax1.axhline(temp_median_city_2, color='#FFA500', linestyle='dotted', alpha=0.5, label=f'Median Temperature {city_2}')\n", + "\n", "# Plot precipitation as bars on the secondary y-axis\n", "ax2 = ax1.twinx()\n", "\n", @@ -345,7 +371,6 @@ "\n", "ax3.grid(axis = 'x')\n", "\n", - "\n", "# Customize the x-axis to show ticks and labels only at the start of each month\n", "plt.gca().xaxis.set_major_locator(mdates.MonthLocator()) \n", "# Format ticks to show abbreviated month names (e.g., Jan, Feb)\n", diff --git a/notebooks/notebook_interactive_data.ipynb b/notebooks/notebook_interactive_data.ipynb index c8b1c27..b96398f 100644 --- a/notebooks/notebook_interactive_data.ipynb +++ b/notebooks/notebook_interactive_data.ipynb @@ -148,7 +148,7 @@ "source": [ "### Viser temperaturen\n", "Regner ut gjennomsnittst-temperatur ved hjelp av innebygde funksjoner. Finner også høyeste og laveste målte temperatur.\n", - "Plotter gjennomsnittstemperaturen og temperaturen per time for dagen valgt, ved hjelp av matplotlib.\n", + "Plotter gjennomsnittstemperaturen, median temperatur og temperaturen per time for dagen valgt, ved hjelp av matplotlib.\n", "\n", "Ved hjelp av ipywidgets så er dette et interaktivt diagram som brukeren selv kan justere på ønskelige effekter ved diagrammet. Når koden først kjøres vil det komme standard layout men disse er det bare å endre, for eksempel farge og størrelse på plots. \n", "\n", @@ -172,15 +172,17 @@ "\n", "# Widgets\n", "show_mean = widgets.Checkbox(value=True, description='Vis gjennomsnitt')\n", + "show_median = widgets.Checkbox(value=True, description='Vis median')\n", "show_grid = widgets.Checkbox(value=True, description='Vis rutenett')\n", "dot_color = widgets.ColorPicker(value='#d62728', description='Farge på punktene')\n", "mean_color = widgets.ColorPicker(value='#d62728', description='Farge for gjennomsnitt')\n", + "median_color = widgets.ColorPicker(value='#d62728', description='Farge for median')\n", "dot_size = widgets.IntSlider(value=40, min=10, max=100, step=5, description='Punktstørrelse')\n", "\n", - "def plot_temp(show_mean, show_grid, dot_color, mean_color, dot_size):\n", + "def plot_temp(show_mean, show_grid, dot_color, mean_color, median_color, dot_size):\n", " '''\n", " This function creates an interactive plot using jupyter widgets. It makes a scatter diagram of the temperature with the temerature mean dashed line.\n", - " It gives the user oppurtunity to customize color and size of the dots. And weather to show the grid or not, the same with the mean temperature line.\n", + " It gives the user oppurtunity to customize color and size of the dots. And weather to show the grid or not, the same with the mean and median temperature line.\n", " '''\n", " \n", " # Where the figure should be saved when exported\n", @@ -194,8 +196,10 @@ " temp_mean = temp.mean().round(2)\n", " max_temp = temp.max().round(2)\n", " min_temp = temp.min().round(2)\n", + " temp_median = temp.median().round(2)\n", "\n", - " print(f'Mean temperatur: {temp_mean}')\n", + " print(\"Mean temperatur:\", temp_mean)\n", + " print(\"Median temperature:\", temp_median)\n", " print(\"Highest temperature:\", max_temp)\n", " print(\"Lowest temperature:\", min_temp)\n", "\n", @@ -204,6 +208,9 @@ "\n", " if show_mean:\n", " plt.axhline(y=temp_mean, color=mean_color, linestyle=\"dashed\", label=f'Gj.snitt {temp_mean}°C')\n", + " \n", + " if show_median:\n", + " plt.axhline(y=temp_median, color=median_color, linestyle='dotted', label=f'Median Temperature {temp_median}')\n", "\n", " ax = plt.gca()\n", " ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))\n", @@ -226,7 +233,7 @@ " plt.close()\n", "\n", "# Collects widgets in a UI (user interface)\n", - "ui = widgets.VBox([show_mean, show_grid, dot_color, mean_color, dot_size])\n", + "ui = widgets.VBox([show_mean, show_grid, dot_color, mean_color, median_color, dot_size])\n", "\n", "# Connects widgets to plot-functions\n", "out = widgets.interactive_output(plot_temp, {\n", @@ -234,6 +241,7 @@ " 'show_grid': show_grid,\n", " 'dot_color': dot_color,\n", " 'mean_color': mean_color,\n", + " 'median_color': median_color,\n", " 'dot_size': dot_size,\n", "})\n", "\n", diff --git a/notebooks/notebook_one_day_data.ipynb b/notebooks/notebook_one_day_data.ipynb index 19cd48e..007cd55 100644 --- a/notebooks/notebook_one_day_data.ipynb +++ b/notebooks/notebook_one_day_data.ipynb @@ -146,9 +146,9 @@ "metadata": {}, "source": [ "### Viser temperaturen\n", - "Regner ut gjennomsnittst-temperatur ved hjelp av innebygde funksjoner. Finner også høyeste og laveste målte temperatur.\n", + "Regner ut gjennomsnitts-temperatur, median temperatur og standardavvik ved hjelp av innebygde funksjoner. Finner også høyeste og laveste målte temperatur.\n", "\n", - "Plotter gjennomsnittstemperaturen og temperaturen per time for dagen valgt, ved hjelp av matplotlib." + "Plotter gjennomsnittstemperaturen, median temperatur og temperaturen per time for dagen valgt, ved hjelp av matplotlib." ] }, { @@ -163,10 +163,15 @@ "# Stores the temperature values\n", "temp = df['main.temp']\n", "\n", + "# Calculates the average temperature, median temperatur and the standard deviation\n", "temp_mean = temp.mean().round(2)\n", + "temp_median = temp.median().round(2)\n", + "temp_stdev = temp.std().round(2)\n", "\n", - "# Print the average temperature\n", + "# Print the average temperature, median temperatur and the standard deviation\n", "print(f'Mean temperatur: {temp_mean}')\n", + "print(f'Median temperature: {temp_median}')\n", + "print(f'Standard deviation: {temp_stdev}')\n", "\n", "# Find the highest and lowest temperatures\n", "max_temp = df['main.temp'].max().round(2)\n", @@ -185,8 +190,9 @@ "# Scatter plot for each temperature reading\n", "plt.scatter(x_axis, temp, color='tab:red', label='Temperaturmålinger', alpha=0.7)\n", "\n", - "# Add a horizontal line for the mean temperature\n", + "# Add a horizontal line for the mean and median temperature\n", "plt.axhline(y=temp_mean, color='tab:red', linestyle=\"dashed\", label=f'Gj.snitt {temp_mean}°C')\n", + "plt.axhline(y=temp_median, color='tab:red', linestyle=\"dotted\", label=f'Median {temp_median}°C')\n", "\n", "# Get the current axis and store it as ax\n", "ax = plt.gca()\n", @@ -366,6 +372,7 @@ "wind_gust = df['wind.gust']\n", "wind_speed = df['wind.speed']\n", "temp_mean = temp.mean().round(2)\n", + "temp_median = temp.median().round()\n", "\n", "# Two vertically stacked axis, (2 rows, 1 column), width and height of the figure, and the axis share the same x_axis\n", "fig, (ax1, ax3) = plt.subplots(2, 1,figsize=(14, 6), sharex=True)\n", @@ -378,9 +385,12 @@ "\n", "# Design the y-axis for temperatur\n", "ax1.set_ylabel('Temperature (°C)', color='tab:red')\n", - "ax1.axhline(y=temp_mean, color='tab:red', linestyle='dashed', label='Mean temperature (°C)')\n", "ax1.tick_params(axis='y', labelcolor='tab:red')\n", "\n", + "# Plots the mean and median temperature\n", + "ax1.axhline(y=temp_mean, color='tab:red', linestyle='dashed', label='Mean temperature (°C)')\n", + "ax1.axhline(y=temp_median, color='tab:red', linestyle='dotted', label='Median temperature (°C)')\n", + "\n", "# Add marker at 0 temperature\n", "ax1.axhline(y=0, color='black', linewidth=1.5)\n", "\n", diff --git a/notebooks/notebook_one_week_data.ipynb b/notebooks/notebook_one_week_data.ipynb index 24992ea..53838e7 100644 --- a/notebooks/notebook_one_week_data.ipynb +++ b/notebooks/notebook_one_week_data.ipynb @@ -190,9 +190,9 @@ "metadata": {}, "source": [ "### Viser temperaturen\n", - "Regner ut gjennomsnittst-temperatur ved hjelp av innebygde funksjoner. Finner også høyeste og laveste målte temperatur.\n", + "Regner ut gjennomsnitts-temperatur, median temperatur og standardavvik ved hjelp av innebygde funksjoner. Finner også høyeste og laveste målte temperatur.\n", "\n", - "VI plotter også temperaturen i et scatter-diagram, med gjennomsnittet på en striplet linje. " + "Plotter gjennomsnittstemperaturen, median temperatur og temperaturen per time for dagen valgt, ved hjelp av matplotlib." ] }, { @@ -207,10 +207,15 @@ "# Stores the temperature values\n", "temp = df['main.temp']\n", "\n", + "# Calculates the average temperature, median temperatur and the standard deviation\n", "temp_mean = temp.mean().round(2)\n", + "temp_median = temp.median().round(2)\n", + "temp_stdev = temp.std().round(2)\n", "\n", - "# Print the average temperature\n", + "# Print the average temperature, median temperatur and the standard deviation\n", "print(f'Mean temperatur: {temp_mean}')\n", + "print(f'Median temperature: {temp_median}')\n", + "print(f'Standard deviation: {temp_stdev}')\n", "\n", "# Find the highest and lowest temperatures\n", "max_temp = df['main.temp'].max().round(2)\n", @@ -229,8 +234,9 @@ "# Scatter plot for each temperature reading\n", "plt.scatter(x_axis, temp, color='tab:red', label='Temperature', alpha=0.7)\n", "\n", - "# Add a horizontal line for the mean temperature\n", + "# Add a horizontal line for the mean and median temperature\n", "plt.axhline(y=temp_mean, color='tab:red', linestyle=\"dashed\", label=f'Gj.snitt {temp_mean}°C')\n", + "plt.axhline(y=temp_median, color='tab:red', linestyle=\"dotted\", label=f'Median {temp_median}°C')\n", "\n", "# Get the current axis and store it as ax\n", "ax = plt.gca()\n", @@ -381,19 +387,22 @@ "wind_gust = df['wind.gust']\n", "wind_speed = df['wind.speed']\n", "temp_mean = temp.mean().round(2)\n", + "temp_median = temp.median().round(2)\n", "\n", "# Two vertically stacked axis, (2 rows, 1 column), width and height of the figure, and the axis share the same x_axis\n", "fig, (ax1, ax3) = plt.subplots(2, 1,figsize=(15, 8), sharex=True)\n", "\n", - "\n", "# Set the title for the diagram, above the first axis, with city_name and input_date\n", "ax1.set_title(f'Weather data for {city_name} ({start_date}) to ({end_date}) ')\n", "\n", "# Plot temperature on the primary y-axis\n", "ax1.plot(x_axis, temp, color='tab:red', label='Temperature (°C)')\n", - "ax1.axhline(y=temp_mean, color='tab:red', linestyle='dashed', label='Mean temperature (°C)')\n", "ax1.axhline(y=0, color='black', linewidth=1.5)\n", "\n", + "# Plots the mean and median temperature\n", + "ax1.axhline(y=temp_mean, color='tab:red', linestyle='dashed', label='Mean temperature (°C)')\n", + "ax1.axhline(y=temp_median, color='tab:red', linestyle='dotted', label='Median temperature (°C)')\n", + "\n", "# Design the y-axis for temperatur\n", "ax1.set_ylabel('Temperature (°C)', color='tab:red')\n", "ax1.tick_params(axis='y', labelcolor='tab:red')\n", @@ -507,7 +516,7 @@ "plt.savefig(plot_path) # Save the plot as a PNG file\n", "\n", "# Show the plot\n", - "plt.show()\n" + "plt.show()" ] } ], diff --git a/notebooks/notebook_statistic_data.ipynb b/notebooks/notebook_statistic_data.ipynb index db56597..20abaf2 100644 --- a/notebooks/notebook_statistic_data.ipynb +++ b/notebooks/notebook_statistic_data.ipynb @@ -149,7 +149,9 @@ "### Viser temperaturen\n", "Vi bruker pandas SQL for å hente ut ønsket tempeartur fra statistic_data og lagrer den i en tabell.\n", "\n", - "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur. Senere kan vi bare skrive en SELECT setning til denne variabelen." + "Ved hjelp av en pandas SQL setning kan vi hente og lagre gjennomsnitt, maksimalt og minste målte temperatur. Senere kan vi bare skrive en SELECT setning til denne variabelen.\n", + "\n", + "Det å regne ut median og standardavvik er ikke innebygd i SQL, i motsetning til gjennomsnitt, maks og min. Derfor regner vi ut disse verdiene manuelt. Vi henter temperatur data fra, og bruker den innebygde pandas og numpy funksjonen `median()` og `std()`, for hendholdsvis median og standardavvik. Vi legger de deretter til som nye kolonner i stat_data." ] }, { @@ -182,10 +184,21 @@ "\n", "# Extract and stores temperatur data for each city using pandas sql\n", "stat_temp = sqldf('''\n", - " SELECT AVG(`temp.mean_celsius`) AS avg_temp, MAX(`temp.max_celsius`) AS max_temp, MIN(`temp.min_celsius`) AS min_temp\n", + " SELECT ROUND(AVG(`temp.mean_celsius`), 2) AS avg_temp, ROUND(MAX(`temp.max_celsius`), 2) AS max_temp, ROUND(MIN(`temp.min_celsius`), 2) AS min_temp\n", " FROM df\n", " ''')\n", "\n", + "# Median and standard deviation cant be calculated with pandasql, therefor we need to add it later\n", + "# We calculate the median, based on the temp_data\n", + "median_temp = temp_data['temp'].median().round(2)\n", + "# Add as a new column in stat_temp\n", + "stat_temp['median_temp'] = median_temp\n", + "\n", + "# We calculate the standard deviation, based on the temp_data\n", + "stdev_temp = temp_data['temp'].std().round(2)\n", + "# Add as a new column in stat_temp\n", + "stat_temp['stdev_temp'] = stdev_temp\n", + "\n", "display(stat_temp)" ] }, @@ -212,9 +225,11 @@ "# Create the folder if it doesn't exist\n", "os.makedirs(output_folder, exist_ok=True)\n", "\n", - "\n", "temp = df['temp.mean_celsius']\n", + "\n", + "# Gets the mean and median temperature from stat_temp\n", "temp_mean = sqldf('''SELECT avg_temp FROM stat_temp''').iloc[0, 0]\n", + "temp_median = sqldf('''SELECT median_temp FROM stat_temp''').iloc[0, 0]\n", "\n", "# Extract precipitation values for both cities\n", "# Because pandas sql returnes the value as a dataframe, we need to get the actual value (all rows, first column)\n", @@ -233,7 +248,9 @@ "\n", "# Add marker at 0 temperature\n", "ax1.axhline(y=0, color='black', linewidth=1.5)\n", + "# Plots both mean and median temperature\n", "ax1.axhline(y=temp_mean, color='red', linestyle=\"dashed\", label=\"Temperature mean (°C)\")\n", + "ax1.axhline(y=temp_median, color='red', linestyle=\"dotted\", label=\"Temperature median (°C)\")\n", "\n", "# Plot precipitation as bars on the secondary y-axis\n", "ax2 = ax1.twinx()\n", @@ -291,7 +308,6 @@ "outputs": [], "source": [ "import seaborn as sns\n", - "import sys\n", "import os\n", "\n", "output_folder = \"../data/figures/output_fig_statistic\"\n", @@ -463,9 +479,12 @@ " # Calculates the standard deviation for the season\n", " season_stdev = temp_season.std()\n", "\n", + " # Standard deviation limit\n", + " threshold = 3\n", + "\n", " # Calculates the limits for 3 standard deviation from the mean\n", - " upper_limit = season_mean + (season_stdev * 3)\n", - " lower_limit = season_mean - (season_stdev * 3)\n", + " upper_limit = season_mean + (season_stdev * threshold)\n", + " lower_limit = season_mean - (season_stdev * threshold)\n", "\n", " # Creates a mask for the temperatures above or below the upper/lower limit\n", " outliers_mask = (temp_season > upper_limit) | (temp_season < lower_limit)\n", From ddf57f46fe7de1f9b52c6d15d8d40f13429d9814 Mon Sep 17 00:00:00 2001 From: toravest Date: Sun, 25 May 2025 19:16:23 +0200 Subject: [PATCH 20/21] rewrite docs/README.md and refleksjonsnotat, add KI-declaration --- ...on.pdf => KI_declaration_hanne_heggdal.pdf} | Bin docs/KI_declaration_tora_vestlund.pdf | Bin 0 -> 123386 bytes docs/README.md | 7 +++---- docs/refleksjonsnotat.md | 10 ++++++---- 4 files changed, 9 insertions(+), 8 deletions(-) rename docs/{KI_one_declaration.pdf => KI_declaration_hanne_heggdal.pdf} (100%) create mode 100644 docs/KI_declaration_tora_vestlund.pdf diff --git a/docs/KI_one_declaration.pdf b/docs/KI_declaration_hanne_heggdal.pdf similarity index 100% rename from docs/KI_one_declaration.pdf rename to docs/KI_declaration_hanne_heggdal.pdf diff --git a/docs/KI_declaration_tora_vestlund.pdf b/docs/KI_declaration_tora_vestlund.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b5ec7cb44f77ec488e990be123ff15f7609a37b2 GIT binary patch literal 123386 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%0ANIxvKEdJSNbx#1WV%7XhaCu4G;kI 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 Date: Sun, 25 May 2025 19:18:38 +0200 Subject: [PATCH 21/21] add UTC+1 (cet), and function to check cet vs cest 2024/2025 --- src/my_package/date_to_unix.py | 34 +++++++++++++++++++++++++--------- src/my_package/util.py | 2 ++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/my_package/date_to_unix.py b/src/my_package/date_to_unix.py index 78c631d..3f392f0 100644 --- a/src/my_package/date_to_unix.py +++ b/src/my_package/date_to_unix.py @@ -2,7 +2,7 @@ import datetime import time from my_package.util import CEST_OFFSET - +from my_package.util import CET_OFFSET def get_unix_timestamp(): ''' @@ -49,11 +49,16 @@ def get_unix_timestamp(): # Converts dates to timestamp used to convert to unix, and print, with the user input start_date_timestamp = datetime.datetime(start_year, start_month, start_date, start_hour, start_minute) end_date_timestamp = datetime.datetime(end_year, end_month, end_date, end_hour, end_minute) - - unix_start = int(time.mktime(start_date_timestamp.timetuple())) + CEST_OFFSET - unix_end = int(time.mktime(end_date_timestamp.timetuple())) + CEST_OFFSET - - # return the unix_start and end timestamp + + if (datetime.datetime(2024, 10, 27) <= start_date_timestamp <= datetime.datetime(2024, 12, 31)) or (datetime.datetime(2025, 1, 1) <= start_date_timestamp <= datetime.datetime(2025, 3, 30)): + unix_start = int(time.mktime(start_date_timestamp.timetuple())) + CET_OFFSET + unix_end = int(time.mktime(end_date_timestamp.timetuple())) + CET_OFFSET + else: + unix_start = int(time.mktime(start_date_timestamp.timetuple())) + CEST_OFFSET + unix_end = int(time.mktime(end_date_timestamp.timetuple())) + CEST_OFFSET + + + # return the unix_start and end timestamp return unix_start, unix_end def from_unix_timestamp(unix_start, unix_end): @@ -62,8 +67,14 @@ def from_unix_timestamp(unix_start, unix_end): timestamp to the inserted: yyyy, mm, dd, hh, mm ''' - start_from_unix = datetime.datetime.fromtimestamp(unix_start - CEST_OFFSET) - end_from_unix = datetime.datetime.fromtimestamp(unix_end - CEST_OFFSET) + start_date = datetime.datetime.fromtimestamp(unix_start) + + if (datetime.datetime(2024, 10, 27) <= start_date <= datetime.datetime(2024, 12, 31)) or (datetime.datetime(2025, 1, 1) <= start_date <= datetime.datetime(2025, 3, 30)): + start_from_unix = datetime.datetime.fromtimestamp(unix_start - CET_OFFSET) + end_from_unix = datetime.datetime.fromtimestamp(unix_end - CET_OFFSET) + else: + start_from_unix = datetime.datetime.fromtimestamp(unix_start - CEST_OFFSET) + end_from_unix = datetime.datetime.fromtimestamp(unix_end - CEST_OFFSET) return start_from_unix, end_from_unix @@ -86,7 +97,12 @@ def get_unix_timestamps_for_day(): timestamps = [] for hour in range(24): dt = datetime.datetime(year, month, day, hour, 0) - unix_timestamp = int(time.mktime(dt.timetuple())) + CEST_OFFSET + # Check if dt is in CET period or not + if (datetime.datetime(2024, 10, 27) <= dt <= datetime.datetime(2024, 12, 31)) or (datetime.datetime(2025, 1, 1) <= dt <= datetime.datetime(2025, 3, 30)): + unix_timestamp = int(time.mktime(dt.timetuple())) + CET_OFFSET + else: + unix_timestamp = int(time.mktime(dt.timetuple())) + CEST_OFFSET + timestamps.append((unix_timestamp, dt.strftime('%Y-%m-%d %H:%M:%S'))) # Prevents from getting data for the current day, or the future diff --git a/src/my_package/util.py b/src/my_package/util.py index 0f6294e..ea83dc5 100644 --- a/src/my_package/util.py +++ b/src/my_package/util.py @@ -3,6 +3,8 @@ # UTC+2, Central European Summer Time CEST_OFFSET = 2 * 3600 # in seconds +# UTC+1, Central European Time +CET_OFFSET = 1 * 3600 # in seconds # Function to replace the norcid 'æøå' def replace_nordic(city_name):