Hallo Steinspiel
das ist immer so eine Sache, mit der einfachen Übernahme von Beispielen in die eigene Konfig.
Ich vermute mal, Du hast OpenHab schon neu gestartet? Dies ist notwendig, wenn Du Änderungen an den XML Dateien vornimmst.
Ferner habe ich schon min. 2 Fehler gefunden
Zeile 12 & 15 unterstützt gemäß Doku keine Angabe von Files
Zeile 13 scheint ein Problem mit der eigenen Deinition eines DaySets zu haben
Ich würde empfehlen, die Beispiele erst einmal abzustrippen und mit einfachen Abfragen anzufangen, dies hilft mir dann immer

Zum testen habe ich einen Test-Switch erstellt, wenn der betätigt wird, lasse ich abfragen laufen und im Log anzeigen.
So kann ich einzelne Befehle immer mal adhoc testen
Bei mir ist zum Beispiel (neben der Konfiguration und cfg) folgendes eingerichtet und seit gerade aktiv
Items
Code: Alles auswählen
Switch Holiday "Feiertag"
String SpecialDay "Heute ist: [MAP(de.map):%s]"
String TodayIs "Heute ist: [%s]"
DateTime Datum "Datum [%1$td.%1$tm.%1$tY]" <calendar> {channel="knx:device:bridge:Vopenhab:datum",channel="ntp:ntp:home:dateTime"}
Things
Code: Alles auswählen
/* Virtuelle Items, keine Hardware */
Thing device Vopenhab "virtuelle" @ "KNX" [
] {
Type datetime-control : uhrzeit "Zeit und Tag" [ ga="10.001:0/8/15" ]
Type datetime-control : datum "Datum" [ ga="11.001:0/47/11" ]
}
Dateien im System (ich habe dies auf einem Windows Rechner laufen) und alles liegt im Service Ordner
holidays_de.xml (wird für Feiertage verwendet und ist eine Kopie des Originals, erweitert um pers. Feiertage wie z.B. Ostersonntag)
holiday_descriptions_de.properties (enthält die Übersetzungen, es sind aber nicht alle pers. Feiertage enthalten)
specialdays.xml (pers. Tage zur besonderen Verwendung wie z.B. Adventsonntage, usw)
Rule
Code: Alles auswählen
rule Feiertage
when
Time cron "0 0 0 * * ?" or
System started
then
if (Ephemeris.isBankHoliday(new DateTimeType().zonedDateTime.now().plusDays(0), '<myPath>/holidays_de.xml') == true) {
postUpdate(TodayIs, Ephemeris.getHolidayDescription(Ephemeris.getBankHolidayName(new DateTimeType().zonedDateTime.now().plusDays(0), '<myPath>/holidays_de.xml')))
postUpdate(Holiday, ON)
} else if (Ephemeris.isBankHoliday(new DateTimeType().zonedDateTime.now().plusDays(0), '<myPath>/holidays_de.xml') == false && Ephemeris.isBankHoliday(new DateTimeType().zonedDateTime.now().plusDays(0), '<myPath>/specialdays.xml') == true) {
postUpdate(TodayIs, Ephemeris.getHolidayDescription(Ephemeris.getBankHolidayName(new DateTimeType().zonedDateTime.now().plusDays(0), '<myPath>/specialdays.xml')))
postUpdate(Holiday, OFF)
} else {
postUpdate(TodayIs, Datum.state.format("%1$tA, %1$td.%1$tm.%1$ty"))
postUpdate(Holiday, OFF)
}
logInfo("Ephemeris", "Heute ist: {}", TodayIs.state)
end
Mit den längeren Pfaden muss gearbeitet werden, da eine kürzere Funktion zwar vorhanden, aber derzeit noch nicht funktioniert.
Ausserdem kann über den <offset> dann auch mal auf einen Feiertag gesprungen werden

Dies hat mir zudem das testen erleichtert.
Sitemap
Nun zeigt mir das Item in der Sitemap entweder den entsprechenden Feiertag, meine "besonderen" Tage oder einfach nur das aktuelle Datum an.
Den Switch Feiertag ON/OFF nutze ich dann in diversen Rules.
Gruß
Jörg
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3