TapHome

OpenWeather

Packet Parser → HTTP
Beküldő
Utoljára frissítve: 03. 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)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

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