ESP32 - problems reading a json response

Hi guys!
I'm trying to read weather data from a json request and extract temperature, rain and a few other things, but I have problems getting anything useful out and outputs are always 0..
My code is posted below :

#include <TimeLib.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeMono9pt7b.h>
#include <NewPing.h>
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <time.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

#define pump_pin 5 // Output pin 5 for water pump
#define manual_pin 14 // Input pin 14 for manually starting irrigation
#define pwm_pin 23 // Pin for PWM output

#define SCREEN_ADDRESS 0x3C // See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32. GPIO21 for SDA and GPIO22 for SCL in ESP32.
Adafruit_SSD1306 display(128, 64, &Wire, -1);

// Declaring variables and settings
int button;
int start_day;
int now_day;
int now_hour;
int now_minute;
int last_minute;
int now_second;
int last_second;
int last_oxyminute;
int pwm_channel = 1;
int pwm_frequency = 25000;
int pwm_resolution = 8;
int temp_parameter = 0;
int rain_parameter = 6;
int cloud_parameter = 11;
int wind_parameter = 4;
int pres_parameter = 10;
const long lat = 59.319435;
const long lon = 18.147673;

// Wifi connection settings
const char* ssid = "devolo-guest-dd0";
const char* password = "password";

// NTP time synchronization settings
const char* ntpServer = "europe.pool.ntp.org";
const long  gmtOffset_sec = 3600;
const int   daylightOffset_sec = 3600;

// Loop time counter
long loopTime = millis();

void setup() {

  Serial.begin(115200); // For ESP32

  // Setup pwm frequency on channel 0
  ledcSetup(pwm_channel, pwm_frequency, pwm_resolution);  // Channel 0, 25 kHz frequency, 8-bit resolution
  ledcAttachPin(pwm_pin, pwm_channel);

  pinMode(pump_pin, OUTPUT);

  delay(50);

  // Connecting to Wifi
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  delay(50);

  Serial.println(" "); // Adding empty serial row

  // Checking internet connection and selecting time setting option
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Wifi connection failed! Rebooting..");
    delay(5000);
    ESP.restart();
  }
  else {
    Serial.println("Wifi connection successful!");
    // Initializing NTP time
    configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
    fetchLocalTime();
    start_day = now_day;
    last_minute = now_minute;
  }

  // OTA settings

  // Hostname defaults to esp3232-[MAC]
  ArduinoOTA.setHostname("Hostname");

  // No authentication by default
  ArduinoOTA.setPassword("Password"); // OTA password

  ArduinoOTA
    .onStart([]() {
      String type;
      if (ArduinoOTA.getCommand() == U_FLASH)
        type = "sketch";
      else // U_SPIFFS
        type = "filesystem";

      // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
      Serial.println("Start updating " + type);
    })
    .onEnd([]() {
      Serial.println("\nEnd");
    })
    .onProgress([](unsigned int progress, unsigned int total) {
      Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
    })
    .onError([](ota_error_t error) {
      Serial.printf("Error[%u]: ", error);
      if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
      else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
      else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
      else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
      else if (error == OTA_END_ERROR) Serial.println("End Failed");
    });

  ArduinoOTA.begin();

  Serial.println("Network Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  // Pause
  delay(50);

  // Start time for the first loop
  last_second = now_second;
  loopTime = millis();
}

void fetchLocalTime(){
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
  }
  now_hour = timeinfo.tm_hour;
  now_minute = timeinfo.tm_min;
  now_second = timeinfo.tm_sec;
  now_day = timeinfo.tm_mday;
}

const char fetchIndex(const char* paramName, String payload){
    int paramIndex = -1;
    // Deserialize JSON response
    DynamicJsonDocument doc(1024);
    deserializeJson(doc, payload);
    JsonArray parameters = doc["timeSeries"][0]["parameters"].as<JsonArray>();
    for (size_t i = 0; i < parameters.size(); i++) {
      const char* name = parameters[i]["name"].as<const char*>();
      if (strcmp(name, paramName) == 0) {
        paramIndex = i;
        break;
      }
    }
    return paramIndex;
}

void fetchWeather(){

  String weblink = "https://opendata-download-metanalys.smhi.se/api/category/mesan1g/version/2/geotype/point/lon/"+String(lon)+"/lat/"+String(lat)+"/data.json";
  // Make HTTP request to SMHI API
  HTTPClient http;
  http.begin(weblink);
  int httpCode = http.GET();

  if (httpCode == HTTP_CODE_OK) {

    Serial.println(".");
    Serial.println(".");

    // Parse JSON response
    String payload = http.getString();
    Serial.println(payload);

    // Deserialize JSON response
    DynamicJsonDocument doc(1024);
    deserializeJson(doc, payload);

    // Extract data from JSON
    float temp = doc["timeSeries"][0]["parameters"]["t"][0]["values"].as<float>();
    float rain = doc["timeSeries"][0]["parameters"]["prec1h"][0]["values"].as<float>();
    int cloud = doc["timeSeries"][0]["parameters"]["tcc"][0]["values"].as<int>();
    float wind = doc["timeSeries"][0]["parameters"]["ws"][0]["values"].as<float>();
    int pres = doc["timeSeries"][0]["parameters"]["msl"][0]["values"].as<int>();
    int humi = doc["timeSeries"][0]["parameters"]["r"][0]["values"].as<int>();
    int symb = doc["timeSeries"][0]["parameters"][fetchIndex("Wsymb2",payload)][0]["values"].as<int>();

    Serial.print(F("Temp: "));
    Serial.print(temp);
    Serial.println(F(" C"));

    Serial.print(F("Rain: "));
    Serial.print(rain);
    Serial.println(F(" mm"));

    Serial.print(F("Clouds: "));
    Serial.print(cloud);
    Serial.println(F(" of 8"));

    Serial.print(F("Wind: "));
    Serial.print(wind);
    Serial.println(F(" m/s"));

    Serial.print(F("Pressure: "));
    Serial.print(pres);
    Serial.println(F(" hPa"));

    Serial.print(F("Humidity: "));
    Serial.print(humi);
    Serial.println(F(" % RH"));

    Serial.print(F("Weather: "));
    Serial.print(symb);
    Serial.println(F(" of 27"));

  } 
  
  else {
    Serial.println("HTTP Error: " + httpCode);
  }
  
}

void loop() {
  
  // OTA 
  ArduinoOTA.handle(); 
  if (millis() - loopTime > 1000) {
    // Getting time
    fetchLocalTime();
    if (now_minute != last_minute) {
      fetchWeather();
      last_minute = now_minute;
    }
  }

  // Reading button state for manual irrigation
  button = digitalRead(manual_pin);

  if (now_second != last_second) {
    last_second = now_second;
    loopTime = millis();
  }

  // Rebooting daily
  if (now_day != start_day) {
    Serial.println("New day = Daily reset. Rebooting..");
    delay(5000);
    ESP.restart();
  }

}

And this is the serial print it returns:

13:19:01.574 -> {"approvedTime":"2023-06-26T10:37:15Z","referenceTime":"2023-06-26T10:00:00Z","geometry":{"type":"Point","coordinates":[[18.020709,58.997085]]},"timeSeries":[{"validTime":"2023-06-26T10:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[22.1]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[17.0]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[7.8]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[144]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[4.1]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[51]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[55.4]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1014.3]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[2]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1995]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1988]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[2488]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T09:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[22.1]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[16.9]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[5.7]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[143]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[3.7]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[50]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[48.8]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1014.6]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[2060]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[2052]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[2552]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T08:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[21.4]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[16.6]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[4.7]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[139]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[2.5]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[55]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[51.7]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1014.8]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[4]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1767]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1760]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[2260]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T07:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[20.9]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[16.0]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[3.2]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[135]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.9]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[54]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[48.5]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1015.1]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[3]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1415]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1408]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1908]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T06:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[19.5]},{"name":"tmax","levelType":"hl","level":2,"unit":"Cel","values":[20.6]},{"name":"tmin","levelType":"hl","level":2,"unit":"Cel","values":[12.6]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[16.4]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[2.0]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[89]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.1]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[67]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec12h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec24h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[49.0]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1015.3]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1104]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1096]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1596]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T05:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[17.1]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[16.8]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[1.4]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[51]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.1]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[87]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[41.8]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1015.5]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[2]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1220]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1212]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1712]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T04:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[13.7]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.2]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[1.2]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[29]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.2]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[100]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[23.6]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1015.8]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[0]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[543]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[536]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1036]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T03:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[11.5]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[14.1]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[1.4]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[6]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.1]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[100]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[12.8]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1016.0]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[8]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[276]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[268]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[768]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T02:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[11.4]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[14.1]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[2.0]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[8]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.2]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[100]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[10.5]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1016.2]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[0]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[104]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[96]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1168]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T01:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[11.8]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[14.2]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[1.9]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[6]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.1]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[100]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[9.3]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1016.4]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[1]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[0]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[120]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[112]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1028]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[1]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-26T00:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[12.3]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[14.2]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[0.9]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[350]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[0.8]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[100]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[13.3]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1016.5]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[178]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[170]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[888]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T23:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[12.7]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[14.2]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[1.0]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[272]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.0]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[93]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[19.2]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1016.8]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[378]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[370]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[872]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T22:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[13.5]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[14.8]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[0.6]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[333]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[0.6]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[92]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[28.3]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.0]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[520]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[512]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1012]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T21:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[14.6]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.2]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[1.0]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[352]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[0.5]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[89]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[42.9]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1016.9]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[2664]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[2656]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[3156]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T20:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[16.6]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.1]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[2.1]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[334]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[0.1]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[75]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[56.5]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.0]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1488]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1480]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[1980]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T19:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[18.8]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.4]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[3.3]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[94]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.0]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[65]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[64.5]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.2]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1604]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1596]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[2096]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T18:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[20.3]},{"name":"tmax","levelType":"hl","level":2,"unit":"Cel","values":[24.9]},{"name":"tmin","levelType":"hl","level":2,"unit":"Cel","values":[20.2]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.6]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[4.5]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[98]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[2.1]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[60]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec12h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[61.0]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.3]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[1]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[1876]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[1868]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[2368]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T17:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[20.9]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.7]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[5.1]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[100]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[2.5]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[57]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[65.3]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.2]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[3]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[2388]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[2380]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[2880]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T16:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[21.4]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.7]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[5.7]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[104]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[3.2]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[54]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[59.2]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.2]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[3]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[2528]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[2520]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[3020]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T15:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[21.8]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.4]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[8.0]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[118]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[4.8]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[45]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[65.1]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.3]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[2]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[2520]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[2512]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[3012]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T14:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[22.3]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.2]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[8.0]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[139]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[4.8]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[35]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[59.4]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.4]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[4]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[3312]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[3304]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[3804]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T13:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[22.9]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.4]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[8.5]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[152]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[4.9]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[34]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[55.5]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.6]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[3]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[3332]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[3324]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[3824]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T12:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[23.1]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[15.9]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[6.5]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[76]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[0.6]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[29]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn3h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn12h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"frsn24h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[49.8]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.8]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[3]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[4151]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[4144]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[4644]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]},{"validTime":"2023-06-25T11:00:00Z","parameters":[{"name":"t","levelType":"hl","level":2,"unit":"Cel","values":[22.8]},{"name":"Tiw","levelType":"hl","level":2,"unit":"Cel","values":[16.3]},{"name":"gust","levelType":"hl","level":10,"unit":"m/s","values":[7.1]},{"name":"wd","levelType":"hl","level":10,"unit":"degree","values":[52]},{"name":"ws","levelType":"hl","level":10,"unit":"m/s","values":[1.2]},{"name":"r","levelType":"hl","level":2,"unit":"percent","values":[33]},{"name":"prec1h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"prec3h","levelType":"hl","level":0,"unit":"mm","values":[0.0]},{"name":"frsn1h","levelType":"hl","level":0,"unit":"cm","values":[0.0]},{"name":"vis","levelType":"hl","level":2,"unit":"km","values":[52.0]},{"name":"msl","levelType":"hmsl","level":0,"unit":"hPa","values":[1017.9]},{"name":"tcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"c_sigfr","levelType":"hl","level":0,"unit":"percent","values":[0]},{"name":"cb_sig","levelType":"hmsl","level":0,"unit":"m","values":[5248]},{"name":"cb_sig","levelType":"hl","level":0,"unit":"m","values":[5240]},{"name":"ct_sig","levelType":"hl","level":0,"unit":"m","values":[5740]},{"name":"lcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"prtype","levelType":"hl","level":0,"unit":"code","values":[-9]},{"name":"prsort","levelType":"hl","level":0,"unit":"code","values":[0]},{"name":"mcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"hcc","levelType":"hl","level":0,"unit":"octas","values":[0]},{"name":"spp","levelType":"hl","level":0,"unit":"percent","values":[-9]},{"name":"Wsymb2","levelType":"hl","level":0,"unit":"category","values":[1]}]}]}
13:19:05.343 -> Temp: 0.00 C
13:19:05.343 -> Rain: 0.00 mm
13:19:05.343 -> Clouds: 0 of 8
13:19:05.343 -> Wind: 0.00 m/s
13:19:05.343 -> Pressure: 0 hPa
13:19:05.343 -> Humidity: 0 % RH
13:19:05.343 -> Weather: 0 of 27

Can anyone please help me figure out what I'm doing wrong?
I've tried 2 different approaches that you can see in the code and also calling the elements by index, but the index variant returned values from other elements in the response so I gave up on that alternative..

Hello

payload is a very long string, more than 40kB of data. doc size is only 1kB.

I think you should use a filter

parameters is an array containing objects identified by the name attribute. So you cannot access that value directly, you have to search in the array for an object with attribute name set to "t" (in this example). And values is again an array, so you have to select the first item.

I thought that was what I did with this line and the fetchIndex() function?

Do you mean it's neccessary to solve for this or just make it smaller?

Didn't seen that line but there's an error too. The fetchindex() function is a resource killer. Why do you parse the complete JSON again? That needs much memory and is completely unnecessary. And on the result you use index 0 although it returns an object. Then you access attribute "values" but you use (better cast) that directly although that returns an array.

Here is an example t1141772 - Wokwi ESP32, STM32, Arduino Simulator

It's just experimentation until I figure out a solution that returns the variables I need :frowning: Not permanent solution of course.

I haven't been able to figure out what it returns yet. I'm completely new to json requests and responses so this is a lot of trial and error for me :slight_smile:
But perhaps you can help me with how this response handling need to look to be able to get the variables out?

Ok guys so I made some progress :slight_smile: I managed to get data out which is fantastic, BUT I can only get out 6 parameters, even though it should be 23. Can you guys see why?

#include <TimeLib.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeMono9pt7b.h>
#include <NewPing.h>
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <time.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>

#define pump_pin 5 // Output pin 5 for water pump
#define manual_pin 14 // Input pin 14 for manually starting irrigation
#define pwm_pin 23 // Pin for PWM output

#define SCREEN_ADDRESS 0x3C // See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32. GPIO21 for SDA and GPIO22 for SCL in ESP32.
Adafruit_SSD1306 display(128, 64, &Wire, -1);

// Declaring variables and settings
int button;
int start_day;
int now_day;
int now_hour;
int now_minute;
int last_minute;
int now_second;
int last_second;
int last_oxyminute;
int pwm_channel = 1;
int pwm_frequency = 25000;
int pwm_resolution = 8;
int temp_parameter = 0;
int rain_parameter = 6;
int cloud_parameter = 11;
int wind_parameter = 4;
int pres_parameter = 10;
const long lat = 59.319435;
const long lon = 18.147673;

// Wifi connection settings
const char* ssid = "devolo-guest-dd0";
const char* password = "Password";

// NTP time synchronization settings
const char* ntpServer = "europe.pool.ntp.org";
const long  gmtOffset_sec = 3600;
const int   daylightOffset_sec = 3600;

// Loop time counter
long loopTime = millis();

void setup() {

  Serial.begin(115200); // For ESP32

  // Setup pwm frequency on channel 0
  ledcSetup(pwm_channel, pwm_frequency, pwm_resolution);  // Channel 0, 25 kHz frequency, 8-bit resolution
  ledcAttachPin(pwm_pin, pwm_channel);

  pinMode(pump_pin, OUTPUT);

  delay(50);

  // Connecting to Wifi
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  delay(50);

  Serial.println(" "); // Adding empty serial row

  // Checking internet connection and selecting time setting option
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Wifi connection failed! Rebooting..");
    delay(5000);
    ESP.restart();
  }
  else {
    Serial.println("Wifi connection successful!");
    // Initializing NTP time
    configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
    fetchLocalTime();
    start_day = now_day;
    last_minute = now_minute-1;
  }

  // OTA settings

  // Hostname defaults to esp3232-[MAC]
  ArduinoOTA.setHostname("Hostname");

  // No authentication by default
  ArduinoOTA.setPassword("Password"); // OTA password

  ArduinoOTA
    .onStart([]() {
      String type;
      if (ArduinoOTA.getCommand() == U_FLASH)
        type = "sketch";
      else // U_SPIFFS
        type = "filesystem";

      // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
      Serial.println("Start updating " + type);
    })
    .onEnd([]() {
      Serial.println("\nEnd");
    })
    .onProgress([](unsigned int progress, unsigned int total) {
      Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
    })
    .onError([](ota_error_t error) {
      Serial.printf("Error[%u]: ", error);
      if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
      else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
      else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
      else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
      else if (error == OTA_END_ERROR) Serial.println("End Failed");
    });

  ArduinoOTA.begin();

  Serial.println("Network Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  // Pause
  delay(50);

  // Start time for the first loop
  last_second = now_second;
  loopTime = millis();
}

void fetchLocalTime(){
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
  }
  now_hour = timeinfo.tm_hour;
  now_minute = timeinfo.tm_min;
  now_second = timeinfo.tm_sec;
  now_day = timeinfo.tm_mday;
}

const char fetchIndex(const char* paramName, DynamicJsonDocument doc){
    int paramIndex = -1;
    JsonArray parameters = doc["timeSeries"][0]["parameters"].as<JsonArray>();
    Serial.print("Parameter size: ");
    Serial.println(parameters.size());
    for (size_t i = 0; i < parameters.size(); i++) {
      const char* name = parameters[i]["name"].as<const char*>();
      Serial.print("Name variable: ");
      Serial.print(name);
      float data = parameters[i]["values"][0].as<float>();
      Serial.print(" ,Data: ");
      Serial.println(data);
      String strname = name;
      String strparam = paramName;
      if (strname == strparam) {
        paramIndex = i;
        Serial.println("Found index!");
      }
    }
    Serial.print("Parameter: ");
    Serial.print(paramName);
    Serial.print(" ,Index: ");
    Serial.println(paramIndex);
    Serial.println(".");
    return paramIndex;
}

void fetchWeather(){

  String weblink = "https://opendata-download-metanalys.smhi.se/api/category/mesan1g/version/2/geotype/point/lon/"+String(lon)+"/lat/"+String(lat)+"/data.json";
  // Make HTTP request to SMHI API
  HTTPClient http;
  http.begin(weblink);
  int httpCode = http.GET();

  if (httpCode == HTTP_CODE_OK) {

    Serial.println(".");
    Serial.println(".");

    // Parse JSON response
    String payload = http.getString();
    // Serial.println(payload);

    // Deserialize JSON response
    DynamicJsonDocument doc(1024);
    deserializeJson(doc, payload);

    // Extract data from JSON
    float temp = doc["timeSeries"][0]["parameters"][fetchIndex("t",doc)]["values"][0].as<float>();
    float rain = doc["timeSeries"][0]["parameters"][fetchIndex("prec1h",doc)]["values"][0].as<float>();
    int cloud = doc["timeSeries"][0]["parameters"][fetchIndex("tcc",doc)]["values"][0].as<int>();
    float wind = doc["timeSeries"][0]["parameters"][fetchIndex("ws",doc)]["values"][0].as<float>();
    int pres = doc["timeSeries"][0]["parameters"][fetchIndex("msl",doc)]["values"][0].as<int>();
    int humi = doc["timeSeries"][0]["parameters"][fetchIndex("r",doc)]["values"][0].as<int>();
    int symb = doc["timeSeries"][0]["parameters"][fetchIndex("Wsymb2",doc)]["values"][0].as<int>();

    Serial.println(".");
    Serial.print(F("Temp: "));
    Serial.print(temp);
    Serial.println(F(" C"));

    Serial.print(F("Rain: "));
    Serial.print(rain);
    Serial.println(F(" mm"));

    Serial.print(F("Clouds: "));
    Serial.print(cloud);
    Serial.println(F(" of 8"));

    Serial.print(F("Wind: "));
    Serial.print(wind);
    Serial.println(F(" m/s"));

    Serial.print(F("Pressure: "));
    Serial.print(pres);
    Serial.println(F(" hPa"));

    Serial.print(F("Humidity: "));
    Serial.print(humi);
    Serial.println(F(" % RH"));

    Serial.print(F("Weather: "));
    Serial.print(symb);
    Serial.println(F(" of 27"));

  } 
  
  else {
    Serial.println("HTTP Error: " + httpCode);
  }
  
}

void loop() {
  
  // OTA 
  ArduinoOTA.handle(); 
  if (millis() - loopTime > 1000) {
    // Getting time
    fetchLocalTime();
    if (now_minute != last_minute) {
      fetchWeather();
      last_minute = now_minute;
    }
  }

  // Reading button state for manual irrigation
  button = digitalRead(manual_pin);

  if (now_second != last_second) {
    last_second = now_second;
    loopTime = millis();
  }

  // Rebooting daily
  if (now_day != start_day) {
    Serial.println("New day = Daily reset. Rebooting..");
    delay(5000);
    ESP.restart();
  }

}

Found it :slight_smile:
It was this:

Thanks guys, I think I got it from here!

At least break out of the loop when the index is found.. :nerd_face:

Thanks yes, did that too :slight_smile:

Provide the JSON document by reference and not by copy to the fetchIndex() function, that saves a lot of memory and CPU time.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.