TapHome

OpenWeather

Packet Parser → HTTP
Přidal
Poslední aktualizace: 03. 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)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

Č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