TapHome

OpenWeather

Packet Parser → HTTP
Beküldő
Utoljára frissítve: 04. 2026
OpenWeather

Az OpenWeather egy időjárási adatszolgáltató, amely REST API-n keresztül kínál globális időjárási információkat. A TapHome sablon a ingyenes OpenWeather API v2.5-höz csatlakozik HTTPS-en keresztül, és az aktuális időjárási körülményeket, 3 órás előrejelzést és 24 órás előrejelzést olvassa be egy beállított helyszínre.

A sablon 5 percenként két API hívást végez — egyet az aktuális időjáráshoz és egyet az 5 napos/3 órás előrejelzéshez. 18 csak olvasható eszközt biztosít, amelyek lefedik a léghőmérsékletet, hőérzetet, páratartalmat, légköri nyomást, látótávolságot, szélsebességet és időjárási körülményeket. Minden hőmérséklet Celsius-fokban van (metrikus mértékegységek), és nincs szükség fizetős előfizetésre.

Konfiguráció

API kulcs beszerzése
  1. Regisztrálj ingyenes fiókot az openweathermap.org oldalon — bankkártya nem szükséges
  2. A regisztráció után az API kulcsot (APPID) megerősítő e-mailben küldik el
  3. A kulcs a fiók oldalon az API key fülön is elérhető
  4. Az új kulcsok automatikusan aktiválódnak, jellemzően 10 percen belül, de legfeljebb 2 óra alatt

Az ingyenes szint percenként 60, havonta 1 000 000 hívást engedélyez. A TapHome sablon naponta körülbelül 576 hívást végez (5 percenként 2 hívás), ami bőven az ingyenes limiten belül van.

Import paraméterek

A sablon TapHome-ba való importálásakor három paraméter szükséges:

ParaméterLeírásPélda
latitudeA helyszín szélességi foka tizedes fokban48.1778
longitudeA helyszín hosszúsági foka tizedes fokban17.1426
appidOpenWeather API kulcs a fiók dashboardjáróla1b2c3d4e5f6...

A helyszín koordinátáinak megtalálásához kattints jobb gombbal a Google Maps térképen, és válaszd ki a koordinátákat a helyi menüből.

API végpontok

A modul az api.openweathermap.org szerverhez csatlakozik HTTPS-en (443-as port) keresztül, és lekérdezési ciklusonként két végpontot hív meg:

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

Az első kérés az aktuális időjárási körülményeket adja vissza. A második egy előrejelzési listát, ahol a list[0] a következő 3 órás slot, a list[8] pedig a +24 órás slot (8 x 3h = 24h).

Eszközképességek

A sablon 18 csak olvasható eszközt tesz elérhetővé, három csoportba rendezve: aktuális időjárás (6 eszköz), 3 órás előrejelzés (6 eszköz) és 24 órás előrejelzés (6 eszköz). Minden csoport ugyanazt a hat mérést biztosítja.

Hőmérséklet és páratartalom
  • Current Air Temperature — aktuális hőmérséklet Celsius-fokban, páratartalommal mint másodlagos értékkel (az API 0–100%-ot ad vissza, a TapHome számára 0–1 arányra konvertálva)
  • Current Feels Like Temperature — hőérzet, amely figyelembe veszi a szélhűtést és a páratartalmat. A páratartalom képesség ki van kapcsolva (NaN-t ad vissza) — csak a hőmérséklet értéke használt
  • Forecast (+3h) Air Temperature — hőmérséklet és páratartalom a következő 3 órás előrejelzési slotra. Tartalmaz egy Forecast Date szervizattribútumot az adatpont időbélyegével
  • Forecast (+3h) Feels Like Temperature — hőérzet a következő 3 órás slotra
  • Forecast (+24h) Air Temperature — hőmérséklet és páratartalom a +24 órás előrejelzési slotra. Tartalmaz egy Forecast Date szervizattribútumot
  • Forecast (+24h) Feels Like Temperature — hőérzet a +24 órás slotra
Légköri nyomás és látótávolság
  • Current Air Pressure — légköri nyomás hPa-ban
  • Current Visibility — látótávolság méterben (maximum 10 000 m)
  • Forecast (+3h) Air Pressure — légköri nyomás a következő 3 órás slotra
  • Forecast (+3h) Visibility — látótávolság a 3 órás előrejelzéshez
  • Forecast (+24h) Air Pressure — légköri nyomás a +24 órás slotra
  • Forecast (+24h) Visibility — látótávolság a 24 órás előrejelzéshez

A Forecast (+3h) Visibility és a Forecast (+24h) Visibility eszközök adatindexei a sablon jelenlegi verziójában fel vannak cserélve. A +3h eszköz a list[8]-ból olvas (24 órás pozíció), a +24h eszköz pedig a list[0]-ból (3 órás pozíció). Az értékek fordítva jelennek meg, amíg ezt egy jövőbeli sablonfrissítés nem javítja.

Szélsebesség
  • Current Wind Speed — szélsebesség m/s-ban
  • Forecast (+3h) Wind Speed — szélsebesség a következő 3 órás slotra
  • Forecast (+24h) Wind Speed — szélsebesség a +24 órás slotra
Időjárási körülmények

Három többértékű kapcsoló eszköz jeleníti meg az időjárási körülmény kategóriáját:

  • Current Weather — aktuális időjárási körülmény
  • Forecast (+3h) Weather — időjárási körülmény a következő 3 órás slotra
  • Forecast (+24h) Weather — időjárási körülmény a +24 órás slotra

Minden időjárási eszköz az API weather[0].main mezőjét képezi le a 7 kategória egyikére:

Kapcsoló értékeCímkeAPI időjárási csoportok
0ClearClear
1CloudsClouds
2RainRain
3DrizzleDrizzle
4ThunderstormThunderstorm
5SnowSnow
6AtmosphereMist, Smoke, Haze, Dust, Fog, Sand, Ash, Squall, Tornado

Ha az API nem felismert időjárási csoportot ad vissza, a kapcsoló alapértelmezetten 0-ra (Clear) áll. A 7, 8 és 9 kapcsolóértékek a sablon konfigurációjában definiáltak, de a szkriptlogikában nincs hozzárendelésük — nem használt helykitöltők.

További képességek

Az OpenWeather API emellett biztosít szélirány-, széllökés-, felhőzöttségi százalék-, eső- és hómennyiség (1h), valamint napkelte/napnyugta adatokat is. A páratartalom csak másodlagos értékként érhető el a hőmérséklet-érzékelőkön, nem önálló eszközként. Ezek egy jövőbeli sablonfrissítésben adhatók hozzá.

Hibaelhárítás

Minden eszköz NaN-t vagy semmilyen adatot nem mutat
  1. Ellenőrizd, hogy a TapHome Core rendelkezik internet-hozzáféréssel — a sablon kimenő HTTPS kapcsolatot igényel az api.openweathermap.org felé
  2. Ellenőrizd, hogy az API kulcs érvényes-e — nyisd meg a https://api.openweathermap.org/data/2.5/weather?lat=48.18&lon=17.14&appid=YOUR_KEY&units=metric címet a böngészőben teszteléshez
  3. Az új API kulcsok aktiválása a regisztrációt követően akár 2 órát is igénybe vehet
  4. Győződj meg arról, hogy a szélességi és hosszúsági értékek helyes tizedes koordináták (nem fok/perc/másodperc)
Az előrejelzési adatok helytelenek

Az előrejelzési API 3 órás intervallumokban adja vissza az adatokat. A +3h eszközök az első előrejelzési slotot olvassák (list[0]), ami a következő elérhető 3 órás blokk — nem pontosan 3 órával későbbi. Hasonlóan, a +24h eszközök a list[8]-at olvassák (9. slot), ami körülbelül 24 órával előre mutat.

Figyeld meg a fenti figyelmeztetésben leírt látótávolság indexcserét — ha a +3h és +24h látótávolság értékek felcseréltnek tűnnek, ez az ismert sablonhiba.

Elírás az eszköznévben

A sablon 17. eszközének neve “Forecast (+24h)Weather” (hiányzik a szóköz a “Weather” előtt). Ez egy kozmetikai probléma a sablon XML-ben, és nem befolyásolja a működést. Az eszköz a TapHome eszköztáblázatban helyesen jelenik meg a gazdagított nevével.

Elérhető eszközök

OpenWeather Modul
Egyéni változók
longitude (string)Az időjárás-állomás helyének földrajzi hosszúsága tizedes fokokban (importáláskor kerül beállításra)
latitude (string)Az időjárás-állomás helyének földrajzi szélességi foka tizedes fokokban (importáláskor kerül beállításra)
AppId (string)OpenWeather API-kulcs (ingyenes kulcs szerezhető itt: openweathermap.org/api)

OpenWeather

Olvasás (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ális légnyomás Változó Csak olvasható
numeric Egység: hPa json_path

Aktuális légnyomás

Olvasás
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.pressure"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuális léghőmérséklet Hőmérséklet-érzékelő Csak olvasható

Aktuális hőmérséklet és páratartalom — a páratartalom 100-zal osztva (API 0–100%-ot ad, TapHome 0–1 arányt vár)

numeric Egység: °C json_path

Aktuális léghőmérséklet

Páratartalom olvasása
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.humidity") / 100)
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Hőmérséklet olvasása
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.temp"))
Aktuális hőérzet Hőmérséklet-érzékelő Csak olvasható

Érzékelt hőmérséklet szélhűtés és páratartalom figyelembevételével — páratartalom funkció kikapcsolva (NaN-t ad)

numeric Egység: °C json_path

Aktuális hőérzet

Páratartalom olvasása
NaN
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Hőmérséklet olvasása
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"main.feels_like"))
Aktuális látótávolság Változó Csak olvasható

Látótávolság méterben (maximum 10 000 m)

numeric Egység: m json_path

Aktuális látótávolság

Olvasás
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"visibility"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuális időjárás Többértékű kapcsoló Csak olvasható

Időjárási állapot többértékű kapcsolóként — derült, felhős, eső, szitálás, vihar, havazás, légköri jelenség

string multi_value_switch
Értékek / Állapotok: Clear · Clouds · Rain · Drizzle · Thunderstorm · Snow · Atmosphere

Aktuális időjárás

Kapcsoló állapot olvasása
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);
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Aktuális szélsebesség Változó Csak olvasható
numeric Egység: m/s json_path

Aktuális szélsebesség

Olvasás
IF(ISNULL(responseJson) | responseJson = "error", NaN, PARSEJSON(responseJson,"wind.speed"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Előrejelzés (+3h) Légnyomás Változó Csak olvasható
numeric Egység: hPa json_path

Előrejelzés (+3h) Légnyomás

Olvasás
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.pressure"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Előrejelzés (+3h) Léghőmérséklet Hőmérséklet-érzékelő Csak olvasható

Hőmérséklet és páratartalom a következő 3 órás előrejelzési slotra — tartalmazza az Előrejelzés dátuma szervizattribútumot

numeric Egység: °C json_path
Szerviz attribútumok
Előrejelzés dátumaAz előrejelzési adatpont időbélyege (dt_txt az API válaszból)

Előrejelzés (+3h) Léghőmérséklet

Páratartalom olvasása
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.humidity") / 100)
Olvasás (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Hőmérséklet olvasása
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.temp"))
Szerviz attribútumok
Forecast Date
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].dt_txt"))
Előrejelzés (+3h) Hőérzet Hőmérséklet-érzékelő Csak olvasható

Érzékelt hőmérséklet a következő 3 órás előrejelzési slotra — páratartalom funkció kikapcsolva (NaN-t ad)

numeric Egység: °C json_path

Előrejelzés (+3h) Hőérzet

Páratartalom olvasása
NaN
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Hőmérséklet olvasása
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].main.feels_like"))
Előrejelzés (+3h) Látótávolság Változó Csak olvasható

Ismert probléma: list[8]-ból olvas list[0] helyett — a látótávolság értékek fel vannak cserélve az Előrejelzés (+24h)-val

numeric Egység: m json_path

Előrejelzés (+3h) Látótávolság

Olvasás
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].visibility"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Előrejelzés (+3h) Időjárás Többértékű kapcsoló Csak olvasható

Időjárási állapot a következő 3 órás előrejelzési slotra — azonos 7 kategóriás leképezés mint az Aktuális időjárás

string multi_value_switch
Értékek / Állapotok: Clear · Clouds · Rain · Drizzle · Thunderstorm · Snow · Atmosphere

Előrejelzés (+3h) Időjárás

Kapcsoló állapot olvasása
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);
Olvasás (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Előrejelzés (+3h) Szélsebesség Változó Csak olvasható
numeric Egység: m/s json_path

Előrejelzés (+3h) Szélsebesség

Olvasás
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].wind.speed"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Előrejelzés (+24h) Légnyomás Változó Csak olvasható
numeric Egység: hPa json_path

Előrejelzés (+24h) Légnyomás

Olvasás
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.pressure"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Előrejelzés (+24h) Léghőmérséklet Hőmérséklet-érzékelő Csak olvasható

Hőmérséklet és páratartalom a +24 órás előrejelzési slotra — tartalmazza az Előrejelzés dátuma szervizattribútumot

numeric Egység: °C json_path
Szerviz attribútumok
Előrejelzés dátumaAz előrejelzési adatpont időbélyege (dt_txt az API válaszból)

Előrejelzés (+24h) Léghőmérséklet

Páratartalom olvasása
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.humidity") / 100)
Olvasás (modul)
IF(ISNULL(Daily) | Daily = "error", ADDERROR("Failed to read data "));
Hőmérséklet olvasása
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.temp"))
Szerviz attribútumok
Forecast Date
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].dt_txt"))
Előrejelzés (+24h) Hőérzet Hőmérséklet-érzékelő Csak olvasható

Érzékelt hőmérséklet a +24 órás előrejelzési slotra — páratartalom funkció kikapcsolva (NaN-t ad)

numeric Egység: °C json_path

Előrejelzés (+24h) Hőérzet

Páratartalom olvasása
NaN
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Hőmérséklet olvasása
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].main.feels_like"))
Előrejelzés (+24h) Látótávolság Változó Csak olvasható

Ismert probléma: list[0]-ból olvas list[8] helyett — a látótávolság értékek fel vannak cserélve az Előrejelzés (+3h)-val

numeric Egység: m json_path

Előrejelzés (+24h) Látótávolság

Olvasás
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[0].visibility"))
Olvasás (modul)
IF(ISNULL(responseJson) | responseJson = "error", ADDERROR("Failed to read data "));
Előrejelzés (+24h) Szélsebesség Változó Csak olvasható
numeric Egység: m/s json_path

Előrejelzés (+24h) Szélsebesség

Olvasás
IF(ISNULL(Daily) | Daily = "error", NaN, PARSEJSON(Daily,"$.list[8].wind.speed"))
Előrejelzés (+24h) Időjárás Többértékű kapcsoló Csak olvasható

Időjárási állapot a +24 órás előrejelzési slotra — azonos 7 kategóriás leképezés mint az Aktuális időjárás

string multi_value_switch
Értékek / Állapotok: Clear · Clouds · Rain · Drizzle · Thunderstorm · Snow · Atmosphere

Előrejelzés (+24h) Időjárás

Kapcsoló állapot olvasása
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);
Kapcsolat: Packet Parser → HTTP
Lehetséges fejlesztések (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

Források