TapHome

OpenWeather

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 03. 2026
OpenWeather

OpenWeather je poskytovateľ meteorologických údajov, ktorý ponúka globálne informácie o počasí prostredníctvom REST API. Šablóna TapHome sa pripája k bezplatnému OpenWeather API v2.5 cez HTTPS a číta aktuálne poveternostné podmienky, 3-hodinovú predpoveď a 24-hodinovú predpoveď pre nakonfigurovanú lokalitu.

Šablóna vykonáva dva API volania každých 5 minút — jedno pre aktuálne počasie a jedno pre 5-dňovú/3-hodinovú predpoveď. Poskytuje 18 zariadení len na čítanie, ktoré pokrývajú teplotu vzduchu, pocitovú teplotu, vlhkosť, atmosférický tlak, viditeľnosť, rýchlosť vetra a poveternostné podmienky. Všetky teploty sú v stupňoch Celzia (metrické jednotky) a nie je potrebné platené predplatné.

Konfigurácia

Získanie API kľúča
  1. Zaregistrujte si bezplatný účet na openweathermap.org — nie je potrebná kreditná karta
  2. Po registrácii sa API kľúč (APPID) odošle v potvrdzujúcom e-maile
  3. Kľúč je tiež dostupný na stránke účtu v záložke API key
  4. Nové kľúče sa aktivujú automaticky, zvyčajne do 10 minút až 2 hodín

Bezplatná úroveň umožňuje 60 volaní za minútu a 1 000 000 volaní za mesiac. Šablóna TapHome vykoná približne 576 volaní denne (2 volania každých 5 minút), čo je v rámci bezplatných limitov.

Parametre importu

Pri importovaní šablóny v TapHome sú potrebné tri parametre:

ParameterPopisPríklad
latitudeZemepisná šírka lokality v desatinných stupňoch48.1778
longitudeZemepisná dĺžka lokality v desatinných stupňoch17.1426
appidAPI kľúč OpenWeather z dashboardu účtua1b2c3d4e5f6...

Na zistenie súradníc lokality kliknite pravým tlačidlom na Google Maps a vyberte súradnice z kontextového menu.

API koncové body

Modul sa pripája na api.openweathermap.org cez HTTPS (port 443) a volá dva koncové body v každom cykle:

1
2
GET /data/2.5/weather?units=metric&lat={latitude}&lon={longitude}&appid={AppId}
GET /data/2.5/forecast?units=metric&lat={latitude}&lon={longitude}&appid={AppId}&cnt=9

Prvá požiadavka vracia aktuálne poveternostné podmienky. Druhá vracia zoznam predpovedí, kde list[0] je nasledujúci 3-hodinový slot a list[8] je slot +24 hodín (8 x 3h = 24h).

Možnosti zariadení

Šablóna sprístupňuje 18 zariadení len na čítanie, organizovaných do troch skupín: aktuálne počasie (6 zariadení), 3-hodinová predpoveď (6 zariadení) a 24-hodinová predpoveď (6 zariadení). Každá skupina poskytuje rovnakých šesť meraní.

Teplota a vlhkosť
  • Current Air Temperature — aktuálna teplota v stupňoch Celzia s vlhkosťou ako sekundárnou hodnotou (API vracia 0–100 %, konvertované na pomer 0–1 pre TapHome)
  • Current Feels Like Temperature — pocitová teplota zohľadňujúca vplyv vetra a vlhkosti. Schopnosť vlhkosti je vypnutá (vracia NaN) — používa sa iba hodnota teploty
  • Forecast (+3h) Air Temperature — teplota a vlhkosť pre nasledujúci 3-hodinový predpovedný slot. Obsahuje servisný atribút Forecast Date zobrazujúci časovú značku dátového bodu
  • Forecast (+3h) Feels Like Temperature — pocitová teplota pre nasledujúci 3-hodinový slot
  • Forecast (+24h) Air Temperature — teplota a vlhkosť pre predpovedný slot +24h. Obsahuje servisný atribút Forecast Date
  • Forecast (+24h) Feels Like Temperature — pocitová teplota pre slot +24h
Atmosférický tlak a viditeľnosť
  • Current Air Pressure — atmosférický tlak v hPa
  • Current Visibility — vzdialenosť viditeľnosti v metroch (maximálne 10 000 m)
  • Forecast (+3h) Air Pressure — atmosférický tlak pre nasledujúci 3-hodinový slot
  • Forecast (+3h) Visibility — viditeľnosť pre 3-hodinovú predpoveď
  • Forecast (+24h) Air Pressure — atmosférický tlak pre slot +24h
  • Forecast (+24h) Visibility — viditeľnosť pre 24-hodinovú predpoveď

Zariadenia Forecast (+3h) Visibility a Forecast (+24h) Visibility majú v aktuálnej verzii šablóny prehodené dátové indexy. Zariadenie +3h číta z list[8] (pozícia 24h) a zariadenie +24h číta z list[0] (pozícia 3h). Hodnoty sú obrátené, kým sa to neopraví v budúcej aktualizácii šablóny.

Rýchlosť vetra
  • Current Wind Speed — rýchlosť vetra v m/s
  • Forecast (+3h) Wind Speed — rýchlosť vetra pre nasledujúci 3-hodinový slot
  • Forecast (+24h) Wind Speed — rýchlosť vetra pre slot +24h
Poveternostné podmienky

Tri zariadenia typu prepínač s viacerými hodnotami zobrazujú kategóriu poveternostných podmienok:

  • Current Weather — aktuálne poveternostné podmienky
  • Forecast (+3h) Weather — poveternostné podmienky pre nasledujúci 3-hodinový slot
  • Forecast (+24h) Weather — poveternostné podmienky pre slot +24h

Každé zariadenie počasia mapuje pole API weather[0].main na jednu zo 7 kategórií:

Hodnota prepínačaOznačenieSkupiny API počasia
0ClearClear
1CloudsClouds
2RainRain
3DrizzleDrizzle
4ThunderstormThunderstorm
5SnowSnow
6AtmosphereMist, Smoke, Haze, Dust, Fog, Sand, Ash, Squall, Tornado

Ak API vráti nerozpoznanú skupinu počasia, prepínač sa predvolene nastaví na 0 (Clear). Hodnoty prepínača 7, 8 a 9 sú definované v konfigurácii šablóny, ale nemajú mapovanie v logike skriptu — sú to nepoužívané zástupné hodnoty.

Ďalšie možnosti

OpenWeather API tiež poskytuje smer vetra, nárazy vetra, percento oblačnosti, objem dažďa a snehu (1h) a časy východu/západu slnka. Vlhkosť je sprístupnená iba ako sekundárna hodnota na teplotných senzoroch, nie ako samostatné zariadenie. Tieto údaje je možné pridať v budúcej aktualizácii šablóny.

Riešenie problémov

Všetky zariadenia zobrazujú NaN alebo žiadne údaje
  1. Overte, že TapHome Core má prístup na internet — šablóna vyžaduje odchádzajúce HTTPS pripojenie na api.openweathermap.org
  2. Skontrolujte, či je API kľúč platný — otvorte https://api.openweathermap.org/data/2.5/weather?lat=48.18&lon=17.14&appid=YOUR_KEY&units=metric v prehliadači na otestovanie
  3. Nové API kľúče sa môžu aktivovať až do 2 hodín po registrácii
  4. Potvrďte, že hodnoty zemepisnej šírky a dĺžky sú správne desatinné súradnice (nie stupne/minúty/sekundy)
Údaje predpovede sa zdajú nesprávne

Predpovedné API vracia údaje v 3-hodinových intervaloch. Zariadenia +3h čítajú prvý predpovedný slot (list[0]), čo je nasledujúci dostupný 3-hodinový blok — nie presne 3 hodiny od teraz. Podobne zariadenia +24h čítajú list[8] (9. slot), čo predstavuje približne 24 hodín dopredu.

Všimnite si prehodenosť indexov viditeľnosti popísanú vo varovaní vyššie — ak sa hodnoty viditeľnosti +3h a +24h zdajú byť vymenené, ide o známu chybu šablóny.

Preklep v názve zariadenia

Zariadenie č. 17 v šablóne sa volá “Forecast (+24h)Weather” (chýba medzera pred “Weather”). Ide o kozmetický problém v XML šablóne, ktorý neovplyvňuje funkčnosť. Zariadenie sa v tabuľke zariadení TapHome zobrazuje správne pomocou obohateného názvu.

Dostupné zariadenia

OpenWeather Modul
Vlastné premenné
longitude (string)Geographic longitude of the weather station location in decimal degrees (set during import)
latitude (string)Geographic latitude of the weather station location in decimal degrees (set during import)
AppId (string)OpenWeather API key (obtain free key at openweathermap.org/api)

OpenWeather

Čítanie (modul)
responseJson := "error";
Daily := "error";

VAR path := "data/2.5/weather?units=metric&lat=" + latitude + "&lon=" + longitude + "&appid=" + AppId;
VAR response := SENDHTTPREQUEST(path);

IF response.IsSuccess
    responseJson := response.Content;
ELSE
    VAR contentJson := response.Content;
    VAR errCode := response.StatusCode;
    VAR message := PARSEJSON(contentJson, "message");
    #ADDERROR("Failed to read data - (" + errCode + ") " + message);
END

path := "data/2.5/forecast?units=metric&lat=" + latitude + "&lon=" + longitude + "&appid=" + AppId + "&cnt=9";
response := SENDHTTPREQUEST(path);

IF response.IsSuccess
    Daily := response.Content;
ELSE
    contentJson := response.Content;
    errCode := response.StatusCode;
    message := PARSEJSON(contentJson, "message");
    #ADDERROR("Failed to read data - (" + errCode + ") " + message);
END
Aktuálny tlak vzduchu Premenná Len na čítanie
numeric Jednotka: hPa json_path

Aktuálny tlak vzduchu

Čítanie
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.pressure"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuálna teplota vzduchu Teplotný senzor Len na čítanie

Aktuálna teplota a vlhkosť — vlhkosť je delená 100 (API vracia 0–100 %, TapHome očakáva pomer 0–1)

numeric Jednotka: °C json_path

Aktuálna teplota vzduchu

Čítanie vlhkosti
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.humidity") / 100)
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Čítanie teploty
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.temp"))
Aktuálna pocitová teplota Teplotný senzor Len na čítanie

Pocitová teplota zohľadňujúca chlad vetra a vlhkosť — funkcia vlhkosti je vypnutá (vracia NaN)

numeric Jednotka: °C json_path

Aktuálna pocitová teplota

Čítanie vlhkosti
NaN
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Čítanie teploty
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.feels_like"))
Aktuálna viditeľnosť Premenná Len na čítanie

Vzdialenosť viditeľnosti v metroch (maximum 10 000 m)

numeric Jednotka: m json_path

Aktuálna viditeľnosť

Čítanie
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"visibility"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuálne počasie Viacstavový prepínač Len na čítanie

Stav počasia ako viachodnotový prepínač — jasno, oblačno, dážď, mrholenie, búrka, sneženie, atmosféra

string multi_value_switch
Hodnoty / Stavy: Clear · Clouds · Rain · Drizzle · Thunderstorm · Snow · Atmosphere

Aktuálne počasie

Čítanie stavu prepínača
IF(ISNULL(responseJson) | responseJson = "error")
    return(NaN);
END

VAR weather := PARSEJSON(responseJson, "weather[0].main");
SWITCH(weather, "Clear", 0, "Clouds", 1, "Rain", 2, "Drizzle", 3, "Thunderstorm", 4, "Snow", 5, "Mist", 6, "Smoke", 6, "Haze", 6, "Dust", 6, "Fog", 6, "Sand", 6, "Ash", 6, "Squall", 6, "Tornado", 6, 0);
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuálna rýchlosť vetra Premenná Len na čítanie
numeric Jednotka: m/s json_path

Aktuálna rýchlosť vetra

Čítanie
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wind.speed"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Predpoveď (+3h) Tlak vzduchu Premenná Len na čítanie
numeric Jednotka: hPa json_path

Predpoveď (+3h) Tlak vzduchu

Čítanie
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.pressure"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Predpoveď (+3h) Teplota vzduchu Teplotný senzor Len na čítanie

Teplota a vlhkosť pre nasledujúci 3-hodinový predpovedný slot — obsahuje servisný atribút Dátum predpovede

numeric Jednotka: °C json_path
Servisné atribúty
Dátum predpovedeČasová značka dátového bodu predpovede (dt_txt z odpovede API)

Predpoveď (+3h) Teplota vzduchu

Čítanie vlhkosti
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.humidity") / 100)
Čítanie (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Čítanie teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.temp"))
Servisné atribúty
Forecast Date
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].dt_txt"))
Predpoveď (+3h) Pocitová teplota Teplotný senzor Len na čítanie

Pocitová teplota pre nasledujúci 3-hodinový predpovedný slot — funkcia vlhkosti je vypnutá (vracia NaN)

numeric Jednotka: °C json_path

Predpoveď (+3h) Pocitová teplota

Čítanie vlhkosti
NaN
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Čítanie teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.feels_like"))
Predpoveď (+3h) Viditeľnosť Premenná Len na čítanie

Známy problém: číta z list[8] namiesto list[0] — hodnoty viditeľnosti sú vymenené s Predpoveď (+24h)

numeric Jednotka: m json_path

Predpoveď (+3h) Viditeľnosť

Čítanie
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].visibility"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Predpoveď (+3h) Počasie Viacstavový prepínač Len na čítanie

Stav počasia pre nasledujúci 3-hodinový predpovedný slot — rovnaké 7-kategóriové mapovanie ako Aktuálne počasie

string multi_value_switch
Hodnoty / Stavy: Clear · Clouds · Rain · Drizzle · Thunderstorm · Snow · Atmosphere

Predpoveď (+3h) Počasie

Čítanie stavu prepínača
IF(ISNULL(Daily) | Daily = "error")
    return(NaN);
END

VAR weather := PARSEJSON(Daily, "$.list[0].weather[0].main");
SWITCH(weather, "Clear", 0, "Clouds", 1, "Rain", 2, "Drizzle", 3, "Thunderstorm", 4, "Snow", 5, "Mist", 6, "Smoke", 6, "Haze", 6, "Dust", 6, "Fog", 6, "Sand", 6, "Ash", 6, "Squall", 6, "Tornado", 6, 0);
Čítanie (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Predpoveď (+3h) Rýchlosť vetra Premenná Len na čítanie
numeric Jednotka: m/s json_path

Predpoveď (+3h) Rýchlosť vetra

Čítanie
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].wind.speed"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Predpoveď (+24h) Tlak vzduchu Premenná Len na čítanie
numeric Jednotka: hPa json_path

Predpoveď (+24h) Tlak vzduchu

Čítanie
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.pressure"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Predpoveď (+24h) Teplota vzduchu Teplotný senzor Len na čítanie

Teplota a vlhkosť pre +24h predpovedný slot — obsahuje servisný atribút Dátum predpovede

numeric Jednotka: °C json_path
Servisné atribúty
Dátum predpovedeČasová značka dátového bodu predpovede (dt_txt z odpovede API)

Predpoveď (+24h) Teplota vzduchu

Čítanie vlhkosti
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.humidity") / 100)
Čítanie (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Čítanie teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.temp"))
Servisné atribúty
Forecast Date
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].dt_txt"))
Predpoveď (+24h) Pocitová teplota Teplotný senzor Len na čítanie

Pocitová teplota pre +24h predpovedný slot — funkcia vlhkosti je vypnutá (vracia NaN)

numeric Jednotka: °C json_path

Predpoveď (+24h) Pocitová teplota

Čítanie vlhkosti
NaN
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Čítanie teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.feels_like"))
Predpoveď (+24h) Viditeľnosť Premenná Len na čítanie

Známy problém: číta z list[0] namiesto list[8] — hodnoty viditeľnosti sú vymenené s Predpoveď (+3h)

numeric Jednotka: m json_path

Predpoveď (+24h) Viditeľnosť

Čítanie
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].visibility"))
Čítanie (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Predpoveď (+24h) Rýchlosť vetra Premenná Len na čítanie
numeric Jednotka: m/s json_path

Predpoveď (+24h) Rýchlosť vetra

Čítanie
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].wind.speed"))
Predpoveď (+24h) Počasie Viacstavový prepínač Len na čítanie

Stav počasia pre +24h predpovedný slot — rovnaké 7-kategóriové mapovanie ako Aktuálne počasie

string multi_value_switch
Hodnoty / Stavy: Clear · Clouds · Rain · Drizzle · Thunderstorm · Snow · Atmosphere

Predpoveď (+24h) Počasie

Čítanie stavu prepínača
IF(ISNULL(Daily) | Daily = "error")
    return(NaN);
END

VAR weather := PARSEJSON(Daily, "$.list[8].weather[0].main");
SWITCH(weather, "Clear", 0, "Clouds", 1, "Rain", 2, "Drizzle", 3, "Thunderstorm", 4, "Snow", 5, "Mist", 6, "Smoke", 6, "Haze", 6, "Dust", 6, "Fog", 6, "Sand", 6, "Ash", 6, "Squall", 6, "Tornado", 6, 0);
Pripojenie: Packet Parser → HTTP
Možné vylepšenia (7)
  • Current Humidity (standalone) — Humidity is only exposed as secondary value on temperature sensors, not as standalone device
  • Wind Direction — Wind direction in degrees available in API but not implemented in template
  • Wind Gust — Wind gust speed available in API but not implemented in template
  • Cloudiness — Cloudiness percentage available in API but not implemented
  • Rain Volume (1h) — Rain volume for last 1 hour in mm, available in API
  • Snow Volume (1h) — Snow volume for last 1 hour in mm, available in API
  • Sunrise / Sunset — Unix timestamps for sunrise and sunset available in API

Zdroje