Manchmal ist es nützlich für bestimmte Regelungen mit openHAB zu wissen, ob ein Feiertag ist, oder nicht.
Zum Beipiel für die Heizungssteuerung, da der Tages-Ablauf ähnlich wie am Wochenende ist und man sich zu Hause und nicht auf der Arbeit befindet.
Es gibt zwar einige CalDav Anbieter, die die Feiertage als iCal Datei anbieten, aber das CalDav Binding für openHAB erwartet spezielle Termine im Kalender, um Regeln darauf anwenden zu können.
Also habe ich mit selbst ein Script geschrieben, welches mir einen Schalter anhand des aktuellen Datums setzt, ob heute ein Feiertag ist, oder eben nicht.
Als erstes habe ich mir ein Item „Holiday“ (als Schalter) und „SpezialDay“ (als String für den Namen) definiert:
Switch Holiday "Feiertag" <calendar> (Holidays) String SpecialDay "Feiertag [MAP(holidays_de.map):%s]" <calendar> (Holidays)
Dann habe ich das eigentlich Script „holiday.script“ erstellt:
Um es zu Internationalisieren gibt es noch eine Transformations-Map:
Damit kann man dann in entsprechenden Regeln darauf reagieren bzw. den Tag in der Sitemap anzeigen lassen:
Switch item=Holiday Text item=SpecialDay
Zum Beispiel die Heizung an diesem Tag länger eingeschaltet lassen, oder die Rolläden später öffnen.