---
title: "OpenHolidays API"
description: "OpenHolidays API-Integration für TapHome. Abfrage von Feiertagen und Schulferien für über 35 Länder per HTTP — Automatisierung von Heizung, Beleuchtung."
url: "https://taphome.com/de/compatibility/openholidays/"
language: de
lastmod: 2026-03-28
generator: hugo
ai:
  topics: ["http","other","rest-api","holiday-detection","scheduling"]
  questions: ["Wie integriert man die OpenHolidays API mit TapHome?","Wie erkennt TapHome automatisch Feiertage?","Wie konfiguriert man Länder- und Regionscodes für OpenHolidays in TapHome?","Warum zeigt das Feiertags-Gerät falsche Ergebnisse an?","Was ist der Unterschied zwischen IsPublicHoliday und IsSchoolHoliday in TapHome?","Kann TapHome Heizungspläne basierend auf Feiertagen anpassen?"]
---

# OpenHolidays API

Kommunikation: Packet Parser → HTTP

- [OpenHolidays API Webseite](https://www.openholidaysapi.org)

## Integrationsanleitung

Die OpenHolidays API ist eine kostenlose Open-Source REST API, die Daten zu gesetzlichen Feiertagen und Schulferien für über 35 Länder bereitstellt. TapHome verbindet sich über HTTPS mit diesem Cloud-Dienst mithilfe eines PacketParser HTTP-Templates — eine Authentifizierung oder ein API-Schlüssel ist nicht erforderlich.

Das Template stellt drei schreibgeschützte boolesche Geräte bereit: eines für Feiertage, eines für Schulferien und eines für Wochenenden. Diese können in TapHome smart rules verwendet werden, um Heizungspläne, Alarmmodi, Lichtszenen oder jede andere Automatisierung daran anzupassen, ob heute ein Arbeitstag ist oder nicht.

Das Template wurde von ToBo, einem Community-Beitragenden, erstellt.

## Konfiguration

Beim Import des Templates sind zwei Parameter erforderlich:

- **Country** — ISO 3166-1 Alpha-2-Ländercode (z. B. `SK` für Slowakei, `DE` für Deutschland, `CZ` für Tschechien). Die vollständige Liste der unterstützten Länder ist unter `https://openholidaysapi.org/Countries` verfügbar.
- **Region** — ISO 3166-2 Unterteilungscode (z. B. `SK-BC` für die Region Banská Bystrica, `DE-BY` für Bayern). Die Liste der Unterteilungen für ein bestimmtes Land ist unter `https://openholidaysapi.org/Subdivisions?countryIsoCode={CountryCode}` verfügbar.

Beide Parameter werden als Module Variables in TapHome gespeichert und können nach dem Import ohne erneuten Import des Templates geändert werden.

> [!TIP]
> Viele Länder haben regionsspezifische Feiertage. Wenn die Feiertagserkennung falsch erscheint, überprüfen Sie, ob der Unterteilungscode der richtigen Region entspricht — nicht nur dem Ländercode.

## Gerätefunktionen

### Feiertagserkennung

Das Gerät Feiertag fragt den Endpoint `GET /PublicHolidays` einmal pro Stunde ab. Es sendet das heutige Datum zusammen mit den konfigurierten Länder- und Regionscodes. Wenn die API einen Feiertagseintrag für dieses Datum zurückgibt, zeigt das Gerät **Yes** an; andernfalls zeigt es **No** an.

### Schulferien-Erkennung

Das Gerät Schulferien funktioniert genauso, fragt aber den Endpoint `GET /SchoolHolidays` ab. Es erkennt, ob der heutige Tag in einen Schulferienabschnitt für das konfigurierte Land und die Region fällt.

> [!NOTE]
> Die Verfügbarkeit von Schulferiendaten variiert je nach Land. Einige Länder haben eine eingeschränkte Abdeckung der Unterteilungen — prüfen Sie die API-Dokumentation, um zu verifizieren, dass Ihre Region unterstützt wird.

### Wochenenderkennung

Das Gerät Wochenende ruft die API nicht auf. Es nutzt die lokale TapHome-Funktion `NOW().DAYOFWEEK`, um festzustellen, ob heute Samstag (Tag 6) oder Sonntag (Tag 0) ist. Dieses Gerät funktioniert unabhängig von der API und benötigt keine Internetverbindung.

### Weitere Funktionen

Die OpenHolidays API stellt auch Endpoints für die Abfrage von Feiertagen nach einem bestimmten Datum über alle Länder hinweg bereit (`/PublicHolidaysByDate`, `/SchoolHolidaysByDate`), die Auflistung unterstützter Länder und regionaler Unterteilungen sowie Statistiken über verfügbare Datenbereiche. Diese können in einem zukünftigen Template-Update ergänzt werden.

## Fehlerbehebung

### Feiertagserkennung liefert falsche Ergebnisse

1. Überprüfen Sie, ob der Ländercode korrekt ist — verwenden Sie den Endpoint `/Countries`, um die Liste der unterstützten Länder zu überprüfen
2. Überprüfen Sie den Regionscode (Unterteilung) — einige Feiertage sind regionsspezifisch und werden mit einem falschen Unterteilungscode nicht angezeigt
3. Prüfen Sie die API direkt im Browser: `https://openholidaysapi.org/PublicHolidays?countryIsoCode=SK&subdivisionCode=SK-BC&validFrom=2026-01-01&validTo=2026-01-01` — ersetzen Sie Datum und Codes durch Ihre Werte
4. Wenn die API ein leeres Array `[]` für ein Datum zurückgibt, das ein Feiertag sein sollte, sind die Daten für dieses Land oder Jahr möglicherweise noch nicht verfügbar

### Gerät zeigt Fehler (NaN)

Wenn die API nicht erreichbar ist (Netzwerkproblem, DNS-Fehler oder API-Ausfall), gibt das Template NaN mit dem HTTP-Statuscode in der Fehlermeldung zurück. Die OpenHolidays API ist ein Community-Projekt ohne SLA — die aktuelle Verfügbarkeit können Sie auf der Statusseite unter `https://openpotato.github.io/uptime/` überprüfen.

> [!WARNING]
> Die OpenHolidays API ist ein von der Community gepflegtes Open-Data-Projekt. Obwohl sie zuverlässig verfügbar ist, gibt es keine Verfügbarkeitsgarantie. Für geschäftskritische Automatisierungen sollten Sie eine Fallback-Regel hinzufügen, die den Fehlerzustand elegant behandelt.

## Verfügbare Geräte 3

Diese Geräte erscheinen nach dem Import in TapHome.

OpenHolidays Modul

Benutzerdefinierte Variablen

`Country` (string) ISO 3166-1 alpha-2 Ländercode (z. B. SK, DE, CZ)

Full list at openholidaysapi.org/Countries

`Region` (string) ISO 3166-2 Gebietseinheitscode (z. B. SK-BC, DE-BY)

List at openholidaysapi.org/Subdivisions?countryIsoCode={CountryCode}

Feiertag Schalter Nur lesen

Fragt die OpenHolidays API einmal pro Stunde ab — Ja, wenn heute ein Feiertag für das konfigurierte Land und die Region ist, sonst Nein

boolean json\_path

Werte / Zustände: Yes · No

Schaltzustand lesen

```taphome
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
```

Schulferien Schalter Nur lesen

Fragt die OpenHolidays API einmal pro Stunde ab — Ja, wenn heute in die Schulferien für das konfigurierte Land und die Region fällt, sonst Nein

boolean json\_path

Werte / Zustände: Yes · No

Schaltzustand lesen

```taphome
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
```

Wochenende Schalter Nur lesen

Lokale Berechnung — Ja am Samstag und Sonntag, Nein an Werktagen. Verwendet nicht die API.

boolean

Werte / Zustände: Yes · No

Schaltzustand lesen

```taphome
var dt := NOW();
return(dt.DAYOFWEEK = 0 or dt.DAYOFWEEK = 6);
```

**Verbindung:** Packet Parser → HTTP

Mögliche Verbesserungen (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

## Importparameter

Diese Werte geben Sie beim Import des XML ein.

| In der App abgefragt | Standard |
|----------------------|----------|
| Country              | `SK`     |
| Region               | `SK-BC`  |

## Quellen

- OpenHolidays API Reference (OpenAPI)
  
  [openholidaysapi.org](https://openholidaysapi.org/swagger/v1/swagger.json) 2026-03-28
- OpenHolidays API — Website Overview
  
  [www.openholidaysapi.org](https://www.openholidaysapi.org/en/api/) 2026-03-28
- OpenHolidays API — GitHub Repository
  
  [github.com](https://github.com/openpotato/openholidaysapi) 2026-03-28

## Verwandte Dokumentation

- [Packet-Parser-Integration](https://taphome.com/de/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/de/docs/integration/packet-parser/)
- [Packet-Parser-Funktionen](https://taphome.com/de/docs/script/packet-parser/)
- [Parsing-Funktionen](https://taphome.com/de/docs/script/parsing-functions/)

