Also, ich habe das mal bei mir durchgespielt, und hier funktioniert der Zugriff auf die Datei.
Allerdings scheint das Ganze Konstrukt extrem anfällig zu sein.
1. Der Dateiname muss
exakt Holidays_de.xml lauten, Groß- und Kleinschreibung sind dabei einzuhalten. Der Dateiname darf nicht anders lauten, weil die xml-Beschreibung den Begriff
Holidays verwendet. Dieser ist ein in Jollyday definiertes Schlüsselwort und offensichtlich muss dieses Schlüsselwort auch beim Dateinamen verwendet werden.
Die Datei ist instanzierbar als landesspezifische Version, wobei die Landeskürzel ebenfalls exakt festgelegt sind (für Deutschland halt
de) und nach dem Unterstrich hinter Holidays angegeben werden müssen. Man darf den Dateinamen keinesfalls frei wählen, was die Angabe des Dateinamens absurd erscheinen lässt.
2. Der Name muss selbstverständlich exakt so auch im Aufruf übergeben werden, also z.B.
Code: Alles auswählen
val strName = getNextBankHoliday("/etc/openhab/services/Holidays_de.xml")
wenn die Datei sich im Verzeichnis
/etc/openhab/services/ (absoluter Pfad aus Sicht von openHAB) befindet.
3. Man muss openHAB komplett neu starten! Bei jeder Änderung an der Datei
Holidays_de.xml und
auch beim Anlegen der Datei. Offensichtlich wird diese Datei nur beim Start von openHAB eingelesen, das ist bei mir der wichtigste Schlüssel gewesen, um die Datei erfolgreich zu verwenden. Besonders unangenehm, weil es halt so vollkommen dem Verhalten von openHAB für den Rest des Systems widerspricht...
4. Die Übersetzung funktioniert trotzdem nicht (auch wenn die Dateinamen peinlich genau eingehalten werden... ist aber auch kein Wunder, es gibt ja keinen Verweis auf die zu verwendende Datei...)
Habe ich schon erwähnt, dass ich die Implementation der Funktion für misslungen halte?
Für die Nutzung in einem Docker Container bedeutet dies:
1. Datei im host-Ordner <OH_CONF_VOLUME>/services/ anlegen, mit dem Namen Holidays_de.xml (<OH_CONF_VOLUME> hat man selbst in der Container Konfiguration festgelegt...)
2. Als absoluten Dateinamen beim Aufruf /openhab/conf/services/Holidays_de.xml angeben, also z.B.
Code: Alles auswählen
getNextBankHoliday("/openhab/conf/services/Holidays_de.xml")
3. Container beenden, bzw. neu starten.
Unbedingt einen Blick ins Log werfen!
Meine Holidays_de.xml wurde zunächst nicht verarbeitet, vermutlich weil an irgendeiner Stelle ein überzähliges Leerzeichen stand (also zwei hintereinander statt nur eines) - was letztlich der Fehler war, ist für mich nicht nachvollziehbar (bzw. habe ich keinen Bock darauf...), jedenfalls hat es geholfen, "meine" Datei mit dem kompletten Inhalt des RAW Files aus dem Projekt zu ersetzen. Erst im Anschluss habe ich angefangen, mit einem einzelnen Termin in der unmittelbaren Zukunft zu experimentieren, weshalb ich auf die Sache mit dem Restart von openHAB gestoßen bin...
openHAB5.1.2 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.5 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte