TapHome

OpenWeather

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 04. 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)Geografická zemepisná dĺžka polohy meteorologickej stanice v desatinných stupňoch (nastavené počas importu)
latitude (string)Geografická zemepisná šírka polohy meteorologickej stanice v desatinných stupňoch (nastavené počas importu)
AppId (string)Kľúč OpenWeather API (získajte bezplatný kľúč na 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