OpenHolidays API to bezpłatne, otwarte REST API dostarczające dane o świętach państwowych i feriach szkolnych dla ponad 35 krajów. TapHome łączy się z tą usługą chmurową przez HTTPS za pomocą szablonu PacketParser HTTP — nie jest wymagane uwierzytelnianie ani klucz API.
Szablon udostępnia trzy urządzenia logiczne tylko do odczytu: jedno dla świąt państwowych, jedno dla ferii szkolnych i jedno dla weekendów. Mogą one być wykorzystywane w smart rules TapHome do dostosowania harmonogramów ogrzewania, trybów alarmu, scen oświetleniowych lub dowolnej innej automatyzacji w zależności od tego, czy dziś jest dzień roboczy.
Szablon został stworzony przez ToBo, członka społeczności.
Konfiguracja
Podczas importu szablonu wymagane są dwa parametry:
- Country — kod kraju ISO 3166-1 alpha-2 (np.
SKdla Słowacji,DEdla Niemiec,CZdla Czech). Pełna lista obsługiwanych krajów jest dostępna pod adresemhttps://openholidaysapi.org/Countries. - Region — kod jednostki podziału ISO 3166-2 (np.
SK-BCdla regionu Banská Bystrica,DE-BYdla Bawarii). Lista jednostek podziału dla danego kraju jest dostępna pod adresemhttps://openholidaysapi.org/Subdivisions?countryIsoCode={CountryCode}.
Oba parametry są przechowywane jako Module Variables w TapHome i mogą być zmieniane po imporcie bez ponownego importowania szablonu.
Wiele krajów ma regionalne święta. Jeśli wykrywanie świąt wydaje się nieprawidłowe, sprawdź, czy kod jednostki podziału odpowiada właściwemu regionowi — nie tylko kodowi kraju.
Możliwości urządzeń
Wykrywanie świąt
Urządzenie Święto odpytuje endpoint GET /PublicHolidays raz na godzinę. Wysyła dzisiejszą datę wraz ze skonfigurowanymi kodami kraju i regionu. Jeśli API zwróci wpis świąteczny dla tej daty, urządzenie pokazuje Yes; w przeciwnym razie pokazuje No.
Wykrywanie ferii szkolnych
Urządzenie Ferie szkolne działa tak samo, ale odpytuje endpoint GET /SchoolHolidays. Wykrywa, czy dzisiejszy dzień przypada na okres ferii szkolnych dla skonfigurowanego kraju i regionu.
Dostępność danych o feriach szkolnych różni się w zależności od kraju. Niektóre kraje mają ograniczone pokrycie jednostek podziału — sprawdź dokumentację API, aby potwierdzić, że Twój region jest obsługiwany.
Wykrywanie weekendów
Urządzenie Weekend nie wywołuje API. Wykorzystuje lokalną funkcję TapHome NOW().DAYOFWEEK do określenia, czy dziś jest sobota (dzień 6) czy niedziela (dzień 0). To urządzenie działa niezależnie od API i nie wymaga połączenia z internetem.
Dodatkowe możliwości
OpenHolidays API udostępnia również endpointy do odpytywania świąt według konkretnej daty we wszystkich krajach (/PublicHolidaysByDate, /SchoolHolidaysByDate), listowania obsługiwanych krajów i regionalnych jednostek podziału oraz pobierania statystyk o dostępnych zakresach danych. Mogą one zostać dodane w przyszłej aktualizacji szablonu.
Rozwiązywanie problemów
Wykrywanie świąt zwraca nieprawidłowe wyniki
- Sprawdź, czy kod kraju jest prawidłowy — użyj endpointu
/Countries, aby sprawdzić listę obsługiwanych krajów - Sprawdź kod regionu (jednostki podziału) — niektóre święta są regionalne i nie pojawią się z nieprawidłowym kodem jednostki podziału
- Sprawdź API bezpośrednio w przeglądarce:
https://openholidaysapi.org/PublicHolidays?countryIsoCode=SK&subdivisionCode=SK-BC&validFrom=2026-01-01&validTo=2026-01-01— zastąp datę i kody swoimi wartościami - Jeśli API zwraca pustą tablicę
[]dla daty, która powinna być świętem, dane dla tego kraju lub roku mogą nie być jeszcze dostępne
Urządzenie pokazuje błąd (NaN)
Jeśli API jest nieosiągalne (problem z siecią, błąd DNS lub przerwa w działaniu API), szablon zwraca NaN z kodem statusu HTTP w komunikacie o błędzie. OpenHolidays API to projekt społecznościowy bez SLA — aktualną dostępność sprawdź na stronie statusu pod adresem https://openpotato.github.io/uptime/.
OpenHolidays API to społecznościowy projekt open data. Choć jest niezawodnie dostępny, nie ma gwarancji czasu działania. W przypadku krytycznych automatyzacji rozważ dodanie reguły zapasowej, która elegancko obsłuży stan błędu.