Pobieranie danych z serwisu OpenWeatherMap

Gate HTTP - pobieranie danych z serwisu OpenWeatherMap


Jeśli chcemy wykorzystać w systemie informacje na temat pogody, wschodu lub zachodu słońca, możemy użyć do tego celu zewnętrznego serwisu, np.: https://openweathermap.org/

Według przykładu na stronie https://openweathermap.org/current, zapytanie API wygląda następująco:
API call: api.openweathermap.org/data/2.5/weather?q={city name}&appid={your api key}


Poniżej opisujemy, jak w prosty sposób można uzyskać wspomniane informacje:

  • Należy utworzyć obiekt wirtualny HttpRequest:
     
  • W obiekcie HttpRequest należy ustawić następujące parametry:

    Gdzie:
    Host: api.openweathermap.org
    Path: /data/2.5/weather
    QueryStringParams: q=Krakow&appid={your api key}

    Uwaga! Klucz api otrzymuje się po założeniu konta na stronie https://home.openweathermap.org/users/sign_up

  • W kolejnym kroku należy utworzyć cechy użytkownika typu string oraz number:
  • Następnie należy przygotować skrypt:
    if(GATE_HTTP->open_weather_map->StatusCode==200) then

    local resp = GATE_HTTP->open_weather_map->ResponseBody

    GATE_HTTP->owm_lon = resp.coord.lon

    GATE_HTTP->owm_lat = resp.coord.lat

    GATE_HTTP->owm_weather_main = resp.weather[1].main

    GATE_HTTP->owm_weather_desc = resp.weather[1].description

    GATE_HTTP->owm_weather_base = resp.base

    GATE_HTTP->owm_temp = resp.main.temp

    GATE_HTTP->owm_temp_min = resp.main.temp_min

    GATE_HTTP->owm_temp_max = resp.main.temp_max

    GATE_HTTP->owm_pressure = resp.main.pressure

    GATE_HTTP->owm_humidity = resp.main.humidity

    GATE_HTTP->owm_visibility = resp.visibility

    GATE_HTTP->owm_wind_speed = resp.wind.speed

    GATE_HTTP->owm_wind_deg = resp.wind.deg

    GATE_HTTP->owm_cloud_all = resp.clouds.all

    GATE_HTTP->owm_country = resp.sys.country

    GATE_HTTP->owm_sunrise = resp.sys.sunrise

    GATE_HTTP->owm_sunset = resp.sys.sunset

    GATE_HTTP->owm_timezone = resp.timezone

    GATE_HTTP->owm_city = resp.name

    end
  • Utworzony skrypt należy przypisać do zdarzenia OnResponse w obiekcie wirtualnym HttpRequest:
  • Następnie należy przesłać konfigurację do CLU.
  • Po poprawnym przesłaniu konfiguracji, w zakładce sterowanie obiektu wirtualnego HttpRequest należy wywołać metodę SendRequest:
  • Po wywołaniu metody cecha StatusCode powinna przyjąć wartość 200:
  • Wartości cech użytkownika powinny przyjąć odpowiednie wartości:
  • Dla porównania - odpowiedź na zapytanie wklejone w oknie przeglądarki internetowej:
  • Uzyskane dane można wyświetlić w aplikacji mobilnej, na Smart Panelu lub wykorzystać do tworzenia logiki w systemie.