Müllkalender mit Ephemeris: "isBankHoliday" immer "false"...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
harteknut
Beiträge: 235
Registriert: 3. Dez 2019 08:21
Answers: 9

Müllkalender mit Ephemeris: "isBankHoliday" immer "false"...

Beitrag von harteknut »

Hallo zusammen,

ich habe mir alle Mülltermine von 2021 in eine eigene Ephermeris-XML eingetragen, um am Display an der Tür anzuzeigen, wenn die Tonnen nach vorne geräumt werden müssen. Das Erstellen der XML war nicht schwer, grundsätzlich klappt auch alles,...
... außer der IF-Abfrage mit "isBankHoliday", und ich bin mit meinem Latein echt am Ende.

Hier die konkrete Fehlerbeschreibung. Meine Müll-XML heißt "muellkalender_fix1.xml" und sieht folgendermaßen aus:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<tns:Configuration hierarchy="de" description="Germany" xmlns:tns="http://www.example.org/Holiday"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.example.org/Holiday /Holiday.xsd">
    <tns:Holidays>
        <tns:Fixed month="NOVEMBER" 	day="26" validFrom="2020" validTo="2020" descriptionPropertiesKey="grau + braun"/>
		<tns:Fixed month="DECEMBER"		day="10" validFrom="2020" validTo="2020" descriptionPropertiesKey="grau + braun"/>		
		<tns:Fixed month="DECEMBER"		day="28" validFrom="2020" validTo="2020" descriptionPropertiesKey="grau + braun"/>
		<tns:Fixed month="JANUARY" 		day="13" validFrom="2021" validTo="2021" descriptionPropertiesKey="grau + braun"/>	
		<tns:Fixed month="JANUARY" 		day="25" validFrom="2021" validTo="2021" descriptionPropertiesKey="grau + braun"/>
		<tns:Fixed month="MARCH" 		day="11" validFrom="2021" validTo="2021" descriptionPropertiesKey="blau"/>
		<tns:Fixed month="MARCH" 		day="25" validFrom="2021" validTo="2021" descriptionPropertiesKey="blau"/>
		<tns:Fixed month="APRIL"	 	day="10" validFrom="2021" validTo="2021" descriptionPropertiesKey="blau"/>
		<tns:Fixed month="APRIL" 		day="22" validFrom="2021" validTo="2021" descriptionPropertiesKey="blau + braun"/>
		<tns:Fixed month="MAY" 			day="06" validFrom="2021" validTo="2021" descriptionPropertiesKey="blau + braun"/>
		<tns:Fixed month="MAY" 			day="20" validFrom="2021" validTo="2021" descriptionPropertiesKey="blau + braun"/>
	 </tns:Holidays>
</tns:Configuration>
Die Abfrage scheint auch grundsätzlich zu funktionieren, denn genau heute ist ja "grau + braun" dran:
Die in der Rule eingetragenen Zeilen:

Code: Alles auswählen

logInfo("Anzeige", (Ephemeris.getNextBankHoliday("/etc/openhab2/services/muellkalender_fix1.xml")))
logInfo("Anzeige", (Ephemeris.getDaysUntil("grau + braun", "/etc/openhab2/services/muellkander_fix1.xml" ).toString)) 
führen zu

Code: Alles auswählen

2020-11-26 14:10:00.017 [INFO ] [lipse.smarthome.model.script.Anzeige] - grau + braun
2020-11-26 14:10:00.035 [INFO ] [lipse.smarthome.model.script.Anzeige] - 0
also scheint der heutige Eintrag gefunden zu werden. Die Abfragen

Code: Alles auswählen

logInfo("Anzeige", (Ephemeris.isBankHoliday(0, "/etc/openhab2/services/muellkalender_fix1.xml").toString))
logInfo("Anzeige", (Ephemeris.isBankHoliday(1, "/etc/openhab2/services/muellkalender_fix1.xml").toString))
mit denen ich abfrage, ob heute oder morgen ein Mülltag ist, ergeben aber

Code: Alles auswählen

2020-11-26 14:10:00.021 [INFO ] [lipse.smarthome.model.script.Anzeige] - false
2020-11-26 14:10:00.026 [INFO ] [lipse.smarthome.model.script.Anzeige] - false
Das verstehe ich nicht. Was mach ich denn falsch?
von harteknut » 26. Nov 2020 16:08
OK, habs gefunden: Ich mach gar nix falsch, es ist einfach nur kaputt. Im offiziellen Forum der Community habe ich den Hinweis gefunden, dass die Methode isBankHoliday(<offset>, <file>) in OH 2.5 nicht funktioniert.
Leider wurde das in der Doku bei getNextBankHoliday(<offset>, <file>) eingetragen, deshalb hab ichs nicht gesehen. K.A., ob evtl. beide Methoden nicht funktionieren, hier jedenfalls die Lösung auf deutsch:
1) ZonedDateTime importieren, indem man in der ersten Zeile der Rule die Zeile

Code: Alles auswählen

import java.time.ZonedDateTime
einträgt.
2) Dann bei der isBankHoliday-Abfrage ZonedDateTime verwenden:

Code: Alles auswählen

isBankHoliday(ZonedDateTime.now().plusDays(<offset>), <file>)
Den Aufruf .plusDays(<offset>) könnt Ihr einfach weglassen, wenn der heutige Tag abgefragt werden soll.

So, jetzt macht Ephemeris wieder Spaß!
Gruß,
Simon
Gehe zur vollständigen Antwort

harteknut
Beiträge: 235
Registriert: 3. Dez 2019 08:21
Answers: 9

Re: Müllkalender mit Ephemeris: "isBankHoliday" immer "false"...

Beitrag von harteknut »

OK, habs gefunden: Ich mach gar nix falsch, es ist einfach nur kaputt. Im offiziellen Forum der Community habe ich den Hinweis gefunden, dass die Methode isBankHoliday(<offset>, <file>) in OH 2.5 nicht funktioniert.
Leider wurde das in der Doku bei getNextBankHoliday(<offset>, <file>) eingetragen, deshalb hab ichs nicht gesehen. K.A., ob evtl. beide Methoden nicht funktionieren, hier jedenfalls die Lösung auf deutsch:
1) ZonedDateTime importieren, indem man in der ersten Zeile der Rule die Zeile

Code: Alles auswählen

import java.time.ZonedDateTime
einträgt.
2) Dann bei der isBankHoliday-Abfrage ZonedDateTime verwenden:

Code: Alles auswählen

isBankHoliday(ZonedDateTime.now().plusDays(<offset>), <file>)
Den Aufruf .plusDays(<offset>) könnt Ihr einfach weglassen, wenn der heutige Tag abgefragt werden soll.

So, jetzt macht Ephemeris wieder Spaß!
Gruß,
Simon

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Müllkalender mit Ephemeris: "isBankHoliday" immer "false"...

Beitrag von udo1toni »

Das würde ich jetzt nicht als "kaputt", sondern als "statt offset in Tagen ist das absolute Datum als ZonedDateTimeType anzugeben" deklarieren.
:)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

harteknut
Beiträge: 235
Registriert: 3. Dez 2019 08:21
Answers: 9

Re: Müllkalender mit Ephemeris: "isBankHoliday" immer "false"...

Beitrag von harteknut »

War nur meine Übersetzung der Meldung im Forum:
Unfortunately exactly the isBankHoliday(<offset>, <file>) action is broken in OH 2.5.x and will probably not working before OH 3.0 [...]
Aber Du hast Recht, der "Workaround" ist vollkommen in Ordnung und bringt keine Einschränkungen mit. Kann von mir aus so bleiben. ;)

Antworten