TapHome

OpenHolidays API

Packet Parser → HTTP
Pridal
Posledná aktualizácia: 03. 2026

OpenHolidays API je bezplatné open-source REST API, ktoré poskytuje údaje o štátnych sviatkoch a školských prázdninách pre viac ako 35 krajín. TapHome sa pripája k tejto cloudovej službe cez HTTPS pomocou PacketParser HTTP šablóny — nie je potrebná žiadna autentifikácia ani API kľúč.

Šablóna poskytuje tri zariadenia s booleovským stavom (len čítanie): jedno pre štátne sviatky, jedno pre školské prázdniny a jedno pre víkendy. Tieto zariadenia sa dajú použiť v smart rules na prispôsobenie harmonogramu vykurovania, režimov alarmu, svetelných scén alebo akejkoľvek inej automatizácie podľa toho, či je dnes pracovný deň alebo nie.

Šablónu vytvoril ToBo, komunitný prispievateľ.

Konfigurácia

Počas importu šablóny sú potrebné dva parametre:

  • Country — ISO 3166-1 alpha-2 kód krajiny (napr. SK pre Slovensko, DE pre Nemecko, CZ pre Česko). Kompletný zoznam podporovaných krajín je dostupný na https://openholidaysapi.org/Countries.
  • Region — ISO 3166-2 kód subdivízie (napr. SK-BC pre Banskobystrický kraj, DE-BY pre Bavorsko). Zoznam subdivízií pre danú krajinu je dostupný na https://openholidaysapi.org/Subdivisions?countryIsoCode={CountryCode}.

Oba parametre sú uložené ako Module Variables v TapHome a dajú sa zmeniť po importe bez nutnosti opätovného importu šablóny.

Mnohé krajiny majú regionálne špecifické sviatky. Ak detekcia sviatkov vyzerá nesprávne, overte, že kód subdivízie zodpovedá správnemu regiónu — nielen kódu krajiny.

Schopnosti zariadení

Detekcia štátnych sviatkov

Zariadenie Štátny sviatok dotazuje endpoint GET /PublicHolidays raz za hodinu. Odošle dnešný dátum spolu s nakonfigurovanými kódmi krajiny a regiónu. Ak API vráti záznam o sviatku pre daný dátum, zariadenie zobrazí Yes; inak zobrazí No.

Detekcia školských prázdnin

Zariadenie Školské prázdniny funguje rovnako, ale dotazuje endpoint GET /SchoolHolidays. Deteguje, či dnešný deň spadá do obdobia školských prázdnin pre nakonfigurovanú krajinu a región.

Dostupnosť údajov o školských prázdninách sa líši podľa krajiny. Niektoré krajiny majú obmedzenú pokrytie subdivízií — skontrolujte dokumentáciu API a overte, že váš región je podporovaný.

Detekcia víkendov

Zariadenie Víkend nevolá API. Používa lokálnu funkciu TapHome NOW().DAYOFWEEK na určenie, či je dnes sobota (deň 6) alebo nedeľa (deň 0). Toto zariadenie funguje nezávisle od API a nepotrebuje internetové pripojenie.

Ďalšie schopnosti

OpenHolidays API taktiež poskytuje endpointy na dopytovanie sviatkov podľa konkrétneho dátumu naprieč všetkými krajinami (/PublicHolidaysByDate, /SchoolHolidaysByDate), výpis podporovaných krajín a regionálnych subdivízií a získavanie štatistík o dostupných dátových rozsahoch. Tieto môžu byť doplnené v budúcej aktualizácii šablóny.

Riešenie problémov

Detekcia sviatkov vracia nesprávne výsledky
  1. Overte, že kód krajiny je správny — na kontrolu zoznamu podporovaných krajín použite endpoint /Countries
  2. Overte kód regiónu (subdivízie) — niektoré štátne sviatky sú regionálne špecifické a nezobrazia sa s nesprávnym kódom subdivízie
  3. Skontrolujte API priamo v prehliadači: https://openholidaysapi.org/PublicHolidays?countryIsoCode=SK&subdivisionCode=SK-BC&validFrom=2026-01-01&validTo=2026-01-01 — nahraďte dátum a kódy vašimi hodnotami
  4. Ak API vráti prázdne pole [] pre dátum, ktorý by mal byť sviatkom, údaje pre danú krajinu alebo rok ešte nemusia byť dostupné
Zariadenie zobrazuje chybu (NaN)

Ak je API nedostupné (problém so sieťou, zlyhanie DNS alebo výpadok API), šablóna vráti NaN s HTTP stavovým kódom v chybovej správe. OpenHolidays API je komunitný projekt bez SLA — aktuálnu dostupnosť skontrolujte na stránke stavu na https://openpotato.github.io/uptime/.

OpenHolidays API je komunitne udržiavaný open data projekt. Hoci je spoľahlivo dostupný, neexistuje žiadna garancia dostupnosti. Pre kritické automatizácie zvážte pridanie záložného pravidla, ktoré elegantne spracuje chybový stav.

Dostupné zariadenia

OpenHolidays Modul
Vlastné premenné
Country (string)ISO 3166-1 alpha-2 country code (e.g. SK, DE, CZ)
Full list at openholidaysapi.org/Countries
Region (string)ISO 3166-2 subdivision code (e.g. SK-BC, DE-BY)
List at openholidaysapi.org/Subdivisions?countryIsoCode={CountryCode}
Štátny sviatok Prepínač Len na čítanie

Dotazuje OpenHolidays API raz za hodinu — Áno, ak je dnes štátny sviatok pre nakonfigurovanú krajinu a región, inak Nie

boolean json_path
Hodnoty / Stavy: Yes · No

Štátny sviatok

Čítanie stavu prepínača
var dt := NOW();
var date := dt.YEAR + "-" + dt.MONTH + "-" + dt.DAY;
var req:= "PublicHolidays?countryIsoCode=" + Country + "&subdivisionCode=" + Region + "&validFrom="+date + "&validTo="+date;
var response := SENDHTTPREQUEST(req);

if response.IsSuccess
  var content := response.Content;
  var isHoliday := PARSEJSON( content, "[0].temporalScope", 1);
  if isHoliday != null
    return(1);
  else
    return(0);
  end
else
  adderror(response.StatusCode + " (" + response.ReasonPhrase + ")");
  return(NaN);
end
Školské prázdniny Prepínač Len na čítanie

Dotazuje OpenHolidays API raz za hodinu — Áno, ak dnes spadá do obdobia školských prázdnin pre nakonfigurovanú krajinu a región, inak Nie

boolean json_path
Hodnoty / Stavy: Yes · No

Školské prázdniny

Čítanie stavu prepínača
var dt := NOW();
var date := dt.YEAR + "-" + dt.MONTH + "-" + dt.DAY;
var req:= "SchoolHolidays?countryIsoCode=" + Country + "&subdivisionCode=" + Region + "&validFrom="+date + "&validTo="+date;
var response := SENDHTTPREQUEST(req);

if response.IsSuccess
  var content := response.Content;
  var isHoliday := PARSEJSON( content, "[0].temporalScope", 1);
  if isHoliday != null
    return(1);
  else
    return(0);
  end
else
  adderror(response.StatusCode + " (" + response.ReasonPhrase + ")");
  return(NaN);
end
Víkend Prepínač Len na čítanie

Lokálny výpočet — Áno v sobotu a nedeľu, Nie v pracovné dni. Nepoužíva API.

boolean
Hodnoty / Stavy: Yes · No

Víkend

Čítanie stavu prepínača
var dt := NOW();
return(dt.DAYOFWEEK = 0 or dt.DAYOFWEEK = 6);
Pripojenie: Packet Parser → HTTP
Možné vylepšenia (7)
  • Public Holidays By Date — Returns all public holidays across all countries for a single date — alternative to country-scoped query
  • School Holidays By Date — Returns all school holidays across all countries for a single date
  • Supported Countries — List of 35+ supported countries — useful for configuration but not a sensor
  • Regional Subdivisions — List of regional divisions for a country — useful for configuration
  • Public Holiday Data Range — Date range of available public holiday data for a country
  • School Holiday Data Range — Date range of available school holiday data for a country
  • Holiday Groups — Non-geographic holiday groupings (language zones, school types) for a country

Zdroje