TapHome

OpenHolidays API

Packet Parser → HTTP
Trimis de
Ultima actualizare: 03. 2026
OpenHolidays API

OpenHolidays API este un REST API gratuit, open source, care oferă date despre sărbătorile legale și vacanțele școlare pentru peste 35 de țări. TapHome se conectează la acest serviciu cloud prin HTTPS, folosind un șablon PacketParser HTTP — nu este necesară autentificarea sau o cheie API.

Șablonul oferă trei dispozitive binare doar pentru citire: unul pentru sărbătorile legale, unul pentru vacanțele școlare și unul pentru weekend. Le puteți folosi în smart rules TapHome pentru a ajusta programele de încălzire, modurile de alarmă, scenele de iluminat sau orice altă automatizare în funcție de faptul că ziua de azi este sau nu zi lucrătoare.

Șablonul a fost creat de ToBo, un colaborator din comunitate.

Configurare

La importul șablonului sunt necesari doi parametri:

  • Country — codul de țară ISO 3166-1 alpha-2 (de ex. SK pentru Slovacia, DE pentru Germania, CZ pentru Cehia). Lista completă a țărilor suportate este disponibilă la https://openholidaysapi.org/Countries.
  • Region — codul subdiviziunii ISO 3166-2 (de ex. SK-BC pentru regiunea Banska Bystrica, DE-BY pentru Bavaria). Lista subdiviziunilor unei țări este disponibilă la https://openholidaysapi.org/Subdivisions?countryIsoCode={CountryCode}.

Ambii parametri se salvează în TapHome ca variabile ale modulului și pot fi modificați după import, fără reimportarea șablonului.

Multe țări au sărbători legale specifice regiunilor. Dacă detectarea sărbătorilor pare incorectă, verificați dacă codul subdiviziunii corespunde regiunii corecte — nu doar codul țării.

Funcțiile dispozitivului

Detectarea sărbătorilor legale

Dispozitivul Sărbătoare legală interoghează endpointul GET /PublicHolidays o dată pe oră. Trimite data de azi împreună cu codurile de țară și de regiune configurate. Dacă API-ul returnează o sărbătoare pentru data respectivă, dispozitivul afișează Da; altfel afișează Nu.

Detectarea vacanțelor școlare

Dispozitivul Vacanță școlară funcționează la fel, dar interoghează endpointul GET /SchoolHolidays. Detectează dacă ziua de azi se încadrează într-o perioadă de vacanță școlară pentru țara și regiunea configurate.

Disponibilitatea datelor despre vacanțele școlare diferă de la o țară la alta. Unele țări au o acoperire limitată a subdiviziunilor — verificați în documentația API dacă regiunea dvs. este suportată.

Detectarea weekendului

Dispozitivul Weekend nu apelează API-ul. Folosește funcția locală TapHome NOW().DAYOFWEEK pentru a determina dacă ziua de azi este sâmbătă (ziua 6) sau duminică (ziua 0). Acest dispozitiv funcționează independent de API și nu necesită conexiune la internet.

Funcții suplimentare

OpenHolidays API expune și endpointuri pentru interogarea sărbătorilor dintr-o anumită dată în toate țările (/PublicHolidaysByDate, /SchoolHolidaysByDate), pentru listarea țărilor și a subdiviziunilor regionale suportate și pentru obținerea statisticilor despre perioadele acoperite de datele disponibile. Acestea pot fi adăugate într-o actualizare viitoare a șablonului.

Rezolvarea problemelor

Detectarea sărbătorilor returnează rezultate incorecte
  1. Verificați dacă codul Country este corect — folosiți endpointul /Countries pentru a verifica lista țărilor suportate
  2. Verificați codul Region (subdiviziunea) — unele sărbători legale sunt specifice regiunii și nu apar cu un cod de subdiviziune greșit
  3. Verificați API-ul direct în browser: https://openholidaysapi.org/PublicHolidays?countryIsoCode=SK&subdivisionCode=SK-BC&validFrom=2026-01-01&validTo=2026-01-01 — înlocuiți data și codurile cu valorile dvs.
  4. Dacă API-ul returnează un tablou gol [] pentru o dată care ar trebui să fie sărbătoare, este posibil ca datele să nu fie încă disponibile pentru țara sau anul respectiv
Dispozitivul afișează eroare (NaN)

Dacă API-ul nu este accesibil (problemă de rețea, eroare DNS sau indisponibilitatea API-ului), șablonul returnează NaN, cu codul de stare HTTP în mesajul de eroare. OpenHolidays API este un proiect al comunității, fără SLA — verificați disponibilitatea actuală pe pagina de stare https://openpotato.github.io/uptime/.

OpenHolidays API este un proiect de date deschise întreținut de comunitate. Deși până acum a funcționat fiabil, disponibilitatea sa nu este garantată. Pentru automatizările critice, luați în considerare adăugarea unui smart rule de rezervă care tratează corect starea de eroare.

Dispozitive disponibile

OpenHolidays Modul
Variabile personalizate
Country (string)Codul de țară ISO 3166-1 alpha-2 (de ex. SK, DE, CZ)
Full list at openholidaysapi.org/Countries
Region (string)Codul subdiviziunii ISO 3166-2 (de ex. SK-BC, DE-BY)
List at openholidaysapi.org/Subdivisions?countryIsoCode={CountryCode}
Sărbătoare legală Comutator Doar citire

Interoghează OpenHolidays API o dată pe oră — Da dacă ziua de azi este sărbătoare legală în țara și regiunea configurate, altfel Nu

boolean json_path
Valori / Stări: Yes · No

Sărbătoare legală

Citirea stării comutatorului
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
Vacanță școlară Comutator Doar citire

Interoghează OpenHolidays API o dată pe oră — Da dacă ziua de azi se încadrează într-o perioadă de vacanță școlară în țara și regiunea configurate, altfel Nu

boolean json_path
Valori / Stări: Yes · No

Vacanță școlară

Citirea stării comutatorului
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
Weekend Comutator Doar citire

Calcul local — Da sâmbăta și duminica, Nu de luni până vineri. Nu folosește API-ul.

boolean
Valori / Stări: Yes · No

Weekend

Citirea stării comutatorului
var dt := NOW();
return(dt.DAYOFWEEK = 0 or dt.DAYOFWEEK = 6);
Conexiune: Packet Parser → HTTP
Îmbunătățiri posibile (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

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal