TapHome

OpenWeather

Packet Parser → HTTP
Přidal
Poslední aktualizace: 04. 2026
OpenWeather

OpenWeather je poskytovatel meteorologických dat nabízející globální informace o počasí prostřednictvím REST API. Šablona TapHome se připojuje k bezplatnému OpenWeather API v2.5 přes HTTPS a čte aktuální povětrnostní podmínky, 3hodinovou předpověď a 24hodinovou předpověď pro nakonfigurovanou lokalitu.

Šablona provádí dvě API volání každých 5 minut — jedno pro aktuální počasí a jedno pro 5denní/3hodinovou předpověď. Poskytuje 18 zařízení pouze pro čtení, pokrývajících teplotu vzduchu, pocitovou teplotu, vlhkost, atmosférický tlak, viditelnost, rychlost větru a povětrnostní podmínky. Všechny teploty jsou ve stupních Celsia (metrické jednotky) a není nutné placené předplatné.

Konfigurace

Získání API klíče
  1. Zaregistrujte si bezplatný účet na openweathermap.org — není potřeba kreditní karta
  2. Po registraci se API klíč (APPID) odešle v potvrzovacím e-mailu
  3. Klíč je také dostupný na stránce účtu v záložce API key
  4. Nové klíče se aktivují automaticky, obvykle do 10 minut až 2 hodin

Bezplatná úroveň umožňuje 60 volání za minutu a 1 000 000 volání za měsíc. Šablona TapHome provede přibližně 576 volání denně (2 volání každých 5 minut), což je v rámci bezplatných limitů.

Parametry importu

Při importu šablony v TapHome jsou vyžadovány tři parametry:

ParametrPopisPříklad
latitudeZeměpisná šířka lokality v desítkových stupních48.1778
longitudeZeměpisná délka lokality v desítkových stupních17.1426
appidAPI klíč OpenWeather z dashboardu účtua1b2c3d4e5f6...

Pro zjištění souřadnic lokality klikněte pravým tlačítkem na Google Maps a vyberte souřadnice z kontextové nabídky.

API koncové body

Modul se připojuje na api.openweathermap.org přes HTTPS (port 443) a volá dva koncové body v každém cyklu:

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

První požadavek vrací aktuální povětrnostní podmínky. Druhý vrací seznam předpovědí, kde list[0] je následující 3hodinový slot a list[8] je slot +24 hodin (8 x 3h = 24h).

Možnosti zařízení

Šablona zpřístupňuje 18 zařízení pouze pro čtení, organizovaných do tří skupin: aktuální počasí (6 zařízení), 3hodinová předpověď (6 zařízení) a 24hodinová předpověď (6 zařízení). Každá skupina poskytuje stejných šest měření.

Teplota a vlhkost
  • Current Air Temperature — aktuální teplota ve stupních Celsia s vlhkostí jako sekundární hodnotou (API vrací 0–100 %, převedeno na poměr 0–1 pro TapHome)
  • Current Feels Like Temperature — pocitová teplota zohledňující vliv větru a vlhkosti. Schopnost vlhkosti je vypnutá (vrací NaN) — používá se pouze hodnota teploty
  • Forecast (+3h) Air Temperature — teplota a vlhkost pro následující 3hodinový předpovědní slot. Obsahuje servisní atribut Forecast Date zobrazující časové razítko datového bodu
  • Forecast (+3h) Feels Like Temperature — pocitová teplota pro následující 3hodinový slot
  • Forecast (+24h) Air Temperature — teplota a vlhkost pro předpovědní slot +24h. Obsahuje servisní atribut Forecast Date
  • Forecast (+24h) Feels Like Temperature — pocitová teplota pro slot +24h
Atmosférický tlak a viditelnost
  • Current Air Pressure — atmosférický tlak v hPa
  • Current Visibility — vzdálenost viditelnosti v metrech (maximálně 10 000 m)
  • Forecast (+3h) Air Pressure — atmosférický tlak pro následující 3hodinový slot
  • Forecast (+3h) Visibility — viditelnost pro 3hodinovou předpověď
  • Forecast (+24h) Air Pressure — atmosférický tlak pro slot +24h
  • Forecast (+24h) Visibility — viditelnost pro 24hodinovou předpověď

Zařízení Forecast (+3h) Visibility a Forecast (+24h) Visibility mají v aktuální verzi šablony prohozené datové indexy. Zařízení +3h čte z list[8] (pozice 24h) a zařízení +24h čte z list[0] (pozice 3h). Hodnoty jsou prohozené, dokud se to neopraví v budoucí aktualizaci šablony.

Rychlost větru
  • Current Wind Speed — rychlost větru v m/s
  • Forecast (+3h) Wind Speed — rychlost větru pro následující 3hodinový slot
  • Forecast (+24h) Wind Speed — rychlost větru pro slot +24h
Povětrnostní podmínky

Tři zařízení typu přepínač s více hodnotami zobrazují kategorii povětrnostních podmínek:

  • Current Weather — aktuální povětrnostní podmínky
  • Forecast (+3h) Weather — povětrnostní podmínky pro následující 3hodinový slot
  • Forecast (+24h) Weather — povětrnostní podmínky pro slot +24h

Každé zařízení počasí mapuje pole API weather[0].main na jednu ze 7 kategorií:

Hodnota přepínačeOznačeníSkupiny API počasí
0ClearClear
1CloudsClouds
2RainRain
3DrizzleDrizzle
4ThunderstormThunderstorm
5SnowSnow
6AtmosphereMist, Smoke, Haze, Dust, Fog, Sand, Ash, Squall, Tornado

Pokud API vrátí nerozpoznanou skupinu počasí, přepínač se výchozně nastaví na 0 (Clear). Hodnoty přepínače 7, 8 a 9 jsou definovány v konfiguraci šablony, ale nemají mapování v logice skriptu — jsou to nepoužívané zástupné hodnoty.

Další možnosti

OpenWeather API také poskytuje směr větru, nárazy větru, procento oblačnosti, objem dešťových a sněhových srážek (1h) a časy východu/západu slunce. Vlhkost je zpřístupněna pouze jako sekundární hodnota na teplotních senzorech, nikoli jako samostatné zařízení. Tyto údaje mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Všechna zařízení zobrazují NaN nebo žádná data
  1. Ověřte, že TapHome Core má přístup k internetu — šablona vyžaduje odchozí HTTPS připojení na api.openweathermap.org
  2. Zkontrolujte, zda je API klíč platný — otevřete https://api.openweathermap.org/data/2.5/weather?lat=48.18&lon=17.14&appid=YOUR_KEY&units=metric v prohlížeči pro otestování
  3. Nové API klíče se mohou aktivovat až do 2 hodin po registraci
  4. Potvrďte, že hodnoty zeměpisné šířky a délky jsou správné desítkové souřadnice (nikoli stupně/minuty/sekundy)
Data předpovědi se zdají nesprávná

Předpovědní API vrací data ve 3hodinových intervalech. Zařízení +3h čtou první předpovědní slot (list[0]), což je následující dostupný 3hodinový blok — nikoli přesně 3 hodiny od teď. Obdobně zařízení +24h čtou list[8] (9. slot), což představuje přibližně 24 hodin dopředu.

Všimněte si prohozenosti indexů viditelnosti popsané ve varování výše — pokud se hodnoty viditelnosti +3h a +24h zdají být prohozené, jedná se o známou chybu šablony.

Překlep v názvu zařízení

Zařízení č. 17 v šabloně se jmenuje “Forecast (+24h)Weather” (chybí mezera před “Weather”). Jedná se o kosmetický problém v XML šabloně, který neovlivňuje funkčnost. Zařízení se v tabulce zařízení TapHome zobrazuje správně pomocí obohaceného názvu.

Dostupná zařízení

OpenWeather Modul
Vlastní proměnné
longitude (string)Zeměpisná délka polohy meteorologické stanice v desetinných stupních (nastaveno při importu)
latitude (string)Zeměpisná šířka polohy meteorologické stanice v desetinných stupních (nastaveno při importu)
AppId (string)Klíč OpenWeather API (získejte bezplatný klíč na openweathermap.org/api)

OpenWeather

Čtení (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ální atmosférický tlak Proměnná Pouze ke čtení
numeric Jednotka: hPa json_path

Aktuální atmosférický tlak

Čtení
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.pressure"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuální teplota vzduchu Teplotní senzor Pouze ke čtení

Aktuální teplota a vlhkost — vlhkost je dělená 100 (API vrací 0–100 %, TapHome očekává poměr 0–1)

numeric Jednotka: °C json_path

Aktuální teplota vzduchu

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

Pocitová teplota zohledňující chlad větru a vlhkost — funkce vlhkosti je vypnutá (vrací NaN)

numeric Jednotka: °C json_path

Aktuální pocitová teplota

Čtení vlhkosti
NaN
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Čtení teploty
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.feels_like"))
Aktuální viditelnost Proměnná Pouze ke čtení

Vzdálenost viditelnosti v metrech (maximum 10 000 m)

numeric Jednotka: m json_path

Aktuální viditelnost

Čtení
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"visibility"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuální počasí Vícestavový přepínač Pouze ke čtení

Stav počasí jako vícehodnotový přepínač — jasno, oblačno, déšť, mrholení, bouřka, sněžení, atmosféra

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

Aktuální počasí

Čtení stavu přepínače
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);
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuální rychlost větru Proměnná Pouze ke čtení
numeric Jednotka: m/s json_path

Aktuální rychlost větru

Čtení
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wind.speed"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Předpověď (+3h) Atmosférický tlak Proměnná Pouze ke čtení
numeric Jednotka: hPa json_path

Předpověď (+3h) Atmosférický tlak

Čtení
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.pressure"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Předpověď (+3h) Teplota vzduchu Teplotní senzor Pouze ke čtení

Teplota a vlhkost pro další 3hodinový předpovědní slot — obsahuje servisní atribut Datum předpovědi

numeric Jednotka: °C json_path
Servisní atributy
Datum předpovědiČasová značka datového bodu předpovědi (dt_txt z odpovědi API)

Předpověď (+3h) Teplota vzduchu

Čtení vlhkosti
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.humidity") / 100)
Čtení (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Čtení teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.temp"))
Servisní atributy
Forecast Date
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].dt_txt"))
Předpověď (+3h) Pocitová teplota Teplotní senzor Pouze ke čtení

Pocitová teplota pro další 3hodinový předpovědní slot — funkce vlhkosti je vypnutá (vrací NaN)

numeric Jednotka: °C json_path

Předpověď (+3h) Pocitová teplota

Čtení vlhkosti
NaN
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Čtení teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.feels_like"))
Předpověď (+3h) Viditelnost Proměnná Pouze ke čtení

Známý problém: čte z list[8] místo list[0] — hodnoty viditelnosti jsou prohozeny s Předpověď (+24h)

numeric Jednotka: m json_path

Předpověď (+3h) Viditelnost

Čtení
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].visibility"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Předpověď (+3h) Počasí Vícestavový přepínač Pouze ke čtení

Stav počasí pro další 3hodinový předpovědní slot — stejné 7kategoriové mapování jako Aktuální počasí

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

Předpověď (+3h) Počasí

Čtení stavu přepínače
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);
Čtení (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Předpověď (+3h) Rychlost větru Proměnná Pouze ke čtení
numeric Jednotka: m/s json_path

Předpověď (+3h) Rychlost větru

Čtení
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].wind.speed"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Předpověď (+24h) Atmosférický tlak Proměnná Pouze ke čtení
numeric Jednotka: hPa json_path

Předpověď (+24h) Atmosférický tlak

Čtení
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.pressure"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Předpověď (+24h) Teplota vzduchu Teplotní senzor Pouze ke čtení

Teplota a vlhkost pro +24h předpovědní slot — obsahuje servisní atribut Datum předpovědi

numeric Jednotka: °C json_path
Servisní atributy
Datum předpovědiČasová značka datového bodu předpovědi (dt_txt z odpovědi API)

Předpověď (+24h) Teplota vzduchu

Čtení vlhkosti
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.humidity") / 100)
Čtení (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Čtení teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.temp"))
Servisní atributy
Forecast Date
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].dt_txt"))
Předpověď (+24h) Pocitová teplota Teplotní senzor Pouze ke čtení

Pocitová teplota pro +24h předpovědní slot — funkce vlhkosti je vypnutá (vrací NaN)

numeric Jednotka: °C json_path

Předpověď (+24h) Pocitová teplota

Čtení vlhkosti
NaN
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Čtení teploty
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.feels_like"))
Předpověď (+24h) Viditelnost Proměnná Pouze ke čtení

Známý problém: čte z list[0] místo list[8] — hodnoty viditelnosti jsou prohozeny s Předpověď (+3h)

numeric Jednotka: m json_path

Předpověď (+24h) Viditelnost

Čtení
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].visibility"))
Čtení (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Předpověď (+24h) Rychlost větru Proměnná Pouze ke čtení
numeric Jednotka: m/s json_path

Předpověď (+24h) Rychlost větru

Čtení
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].wind.speed"))
Předpověď (+24h) Počasí Vícestavový přepínač Pouze ke čtení

Stav počasí pro +24h předpovědní slot — stejné 7kategoriové mapování jako Aktuální počasí

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

Předpověď (+24h) Počasí

Čtení stavu přepínače
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);
Připojení: Packet Parser → HTTP
Možná vylepšení (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