[solved] Ein Newbie benötigt Hife bei einer Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von peter-pan »

PJH hat geschrieben: 22. Dez 2023 13:30 Peter, ich würde dann, wenn Du gestattest, noch einmal auf dich zukommen.
Gerne, wenn ich helfen kann :)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

PJH
Beiträge: 135
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von PJH »

Hallo udo1toni,

ich habe mich mit Ephemeris ein bisschen umgesehen, richtig verstehen tue ich es (noch) nicht.

Ab er sehe ich es richtig, dass man für jedes Jahr die Holiday-Datei händisch anpassen muss?
openHAB 4.3 im Synology NAS Docker-Container.

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von udo1toni »

PJH hat geschrieben: 24. Dez 2023 13:58 sehe ich es richtig, dass man für jedes Jahr die Holiday-Datei händisch anpassen muss?
Nein :) In der xml-Datei stehen die Regeln drin, nachdem die Tage berechnet werden, also z.B. 2 Tage vor Ostersonntag -> Karfreitag, oder auch 1.5. -> Tag der Arbeit usw. Die Datei enthält dabei beliebig viele Feiertage beliebig vieler Regionen, Du könntest z.B. auch den 4.7. oder Thanksgiving mit eintragen (einmalig) und wenn Du dazu schreibst, dass der nur in den USA gilt, wird er bei Dir nicht angezeigt, bzw. nur, wenn Du aktiv danach fragst.

Du kannst selbstverständlich auch andere (bevorzugt wiederkehrende) Ereignisse hier einspeichern, z.B. Geburtstage oder Ferien.
Bei den Ferien ist es natürlich so, dass Du die pro Jahr händisch anpassen musst, weil es halt leider keine vernünftige Schnittstelle der Kultusministerien für die Ferientermine gibt (ist wohl auch zu viel verlangt - das Internet ist schließlich Neuland für uns alle... :lol: )
Allerdings kannst Du einfach die Ferientermine für die nächsten Jahre eintragen, Du musst das also nicht jährlich anpassen, sondern nur dann, wenn die Termine ausgehen :)
Als Beispiel wäre in der verlinkten Datei der Reformationstag, der früher einmal Feiertag war, jetzt nur noch in einigen Bundesländern, aber zum 500. Jubiläum (Äh... Geburtstag von Luther) wurde er einmalig bundesweit begangen und ist auch so in der xml-Datei hinterlegt.
Auch der Tag der deutschen Einheit ist hier mit dem 17. Juni hinterlegt, halt nur bis 1990 und ab da war es dann der 3. Oktober. Interessanterweise werden hier zwei unterschiedliche Namen verwendet, das ist aber nicht zwingend.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von int5749 »

udo1toni hat geschrieben: 22. Dez 2023 14:55 Man kann in dieser Datei auch die Adventssonntage mit abbilden.
Moin Udo (da zitiert) aber auch alle anderen ;)

Erst einmal hoffe ich, dass Alle ein besinnliches Weihnachtsfest hatten.

Wie Du schreibst, habe ich die Extratage (nicht als Feiertag deklariert) bei Ephemeris eingearbeitet. Das funktioniert auch, bis auf die deutsche Übersetzung :-/ Hast Du damit schon weiter experimentiert?

Meine Rule dazu lautet

Code: Alles auswählen

rule Feiertage
when
    Time cron "5 0 0 * * ?" or
    Item vSystemRestart changed to ON or
    System started
then
    val String strHoliday = '/etc/openhab/services/holidays_de.xml'
    val String strSpecialday = '/etc/openhab/services/specialdays.xml'
    val dtDate = new DateTimeType().zonedDateTime.plusDays(0)

    var String strToday = "regular"

    if  (Ephemeris.isBankHoliday(dtDate, strHoliday)) {
        strToday = Ephemeris.getHolidayDescription(Ephemeris.getBankHolidayName(dtDate, strHoliday))
        Holiday.postUpdate(ON)
    } else {
        Holiday.postUpdate(OFF)
        if (Ephemeris.isBankHoliday(dtDate, strSpecialday))
            strToday = Ephemeris.getBankHolidayName(dtDate, strSpecialday)
    }
    TodayIs.postUpdate(strToday)
    logInfo("Ephemeris", "Heute ist: {}", strToday)
    logInfo("Ephemeris", "Feiertag: {}", Holiday.state.toString)
end
specialdays.xml

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:ChristianHoliday type="CARNIVAL"/> <!-- dayOfYear==easterSunday.getDayOfYear-48 -->
        <tns:ChristianHoliday type="MAUNDY_THURSDAY"/> <!-- dayOfYear==easterSunday.getDayOfYear-3 -->
        <tns:Fixed day="29" month="JUNE" descriptionPropertiesKey="ST_PETER_PAUL"/>
        <!-- dayOfYear==stAdvent.getDayOfYear-14 // "remembrance_day" // Volkstrauertag -->
        <!-- dayOfYear==stAdvent.getDayOfYear-7 // "sunday_in_commemoration_of_the_dead" // Totensonntag -->
        <tns:Fixed day="04" month="DECEMBER" descriptionPropertiesKey="ST_BARBARAS_DAY"/> <!-- Barbara Tag -->
        <tns:Fixed day="06" month="DECEMBER" descriptionPropertiesKey="ST_NICHOLAS"/> <!-- Nicolaus Tag -->
        <tns:FixedWeekdayRelativeToFixed which="FIRST" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="FOURTH_ADVENT" localizedType="OFFICIAL_HOLIDAY">
            <tns:day month="DECEMBER" day="25"/>
        </tns:FixedWeekdayRelativeToFixed>
        <tns:FixedWeekdayRelativeToFixed which="SECOND" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="THIRD_ADVENT" localizedType="UNOFFICIAL_HOLIDAY">
            <tns:day month="DECEMBER" day="25"/>
        </tns:FixedWeekdayRelativeToFixed>
        <tns:FixedWeekdayRelativeToFixed which="THIRD" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="SECOND_ADVENT" localizedType="UNOFFICIAL_HOLIDAY">
            <tns:day month="DECEMBER" day="25"/>
        </tns:FixedWeekdayRelativeToFixed>
        <tns:FixedWeekdayRelativeToFixed which="FOURTH" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="FIRST_ADVENT" localizedType="UNOFFICIAL_HOLIDAY">
            <tns:day month="DECEMBER" day="25"/>
        </tns:FixedWeekdayRelativeToFixed>
    </tns:Holidays>
</tns:Configuration>
In der holiday_descriptions_de.properties habe ich folgendes ergänzt

Code: Alles auswählen

holiday.description.FIRST_ADVENT                   = 1. Advent
holiday.description.SECOND_ADVENT                  = 2. Advent
holiday.description.THIRD_ADVENT                   = 3. Advent
holiday.description.FOURTH_ADVENT                  = 4. Advent
Die Abfrage an sich funktioniert, nur das eben FIRST_ADVENT anstatt von 1. Advent angezeigt wird.

Evtl. liegt es daran, dass ich keinen Verweis auf meine lokale holiday_descriptions_de.properties angegeben habe? Jedoch hatte ich bisher keinen Hinweis gefunden, wo man das angeben müsste?

Viele Grüße
Jörg
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von peter-pan »

...müsstest du da nicht auch mit der Methode "Ephemeris.getHolidayDescription" im Else-Zweig arbeiten ? Also etwa so

Code: Alles auswählen

strToday = Ephemeris.getHolidayDescription(Ephemeris.getBankHolidayName(dtDate, strSpecialday))
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

nw378
Beiträge: 296
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von nw378 »

Ich - und auch zuvor andere in diesem Forum - haben sich die Finger gebrochen an der deutschen Übersetzung mittels getHolidayDescription:

viewtopic.php?p=57463&hilit=getHolidayD ... ion#p57463

Was stattdessen funktioniert ist die MAP Transformation (MAP muss als Addon installiert sein):

Code: Alles auswählen

strToday = transform("MAP", "holidays_DE.map", Ephemeris.getBankHolidayName(dtDate, strHoliday).toString)

Inhalt der holidays_DE.map Datei (gespeichert unter /etc/openhab/transform):

Code: Alles auswählen

ALL_SAINTS                     = Allerheiligen
ALL_SOULS                      = Aller Seelen
ASSUMPTION_DAY                 = Mari\u00E4 Himmelfahrt
ASSUMPTION_MARY                = Mari\u00E4 Himmelfahrt
BANK_HOLIDAY                   = Bank Feiertag
BEER_DAY                       = Bier Tag
CHRISTMAS                      = Weihnachten
CHRISTMAS_EVE                  = Heiligabend
CONSOLIDATION                  = Tag der Einheit
CONSTITUTION_DAY               = Tag der Verfassung
CYBER_MONDAY                   = Cyber Monday
DAY_AFTER_NEW_YEAR             = Tag nach Neujahr
EUROPE_DAY                     = Europatag
LABOUR_DAY                     = Tag der Arbeit
MAY_DAY                        = Mai-Tag
MOTHERS_DAY                    = Muttertag
NATIONAL_DAY                   = Nationalfeiertag
NEW_YEAR                       = Neujahr
NEW_YEARS_EVE                  = Silvester
REFORMATION_DAY                = Reformationstag
REGIONAL                       = Regionaler Feiertag
THREE_HIERARCHS                = Die 3 Heiligen
UNIFICATION                    = Tag der Wiedervereinigung
UNIFICATION_GERMANY            = Tag der Deutschen Einheit
christian.ASCENSION_DAY        = Christi Himmelfahrt
christian.ASH_WEDNESDAY        = Aschermittwoch
christian.CARNIVAL             = Karneval
christian.CLEAN_MONDAY         = Aschermontag
christian.CORPUS_CHRISTI       = Fronleichnam
christian.EASTER               = Ostern
christian.EASTER_MONDAY        = Ostermontag
christian.EASTER_SATURDAY      = Ostersamstag
christian.EASTER_TUESDAY       = Fastnachtdienstag
christian.GENERAL_PRAYER_DAY   = Allg. Bettag
christian.GOOD_FRIDAY          = Karfreitag
christian.MAUNDY_THURSDAY      = Gr\u00FCndonnerstag
christian.PENTECOST            = Pfingsten
christian.PENTECOST_MONDAY     = Pfingstmontag
christian.SHROVE_MONDAY        = Aschermontag
christian.WHIT_MONDAY          = Pfingstmontag
christian.WHIT_SUNDAY          = Pfingstsonntag
FIRST_CHRISTMAS_DAY            = 1. Weihnachtsfeiertag
SECOND_CHRISTMAS_DAY           = 2. Weihnachtsfeiertag
-=-
undefined=-
no_holiday=kein Feiertag
UNDEF=-
NULL=-
kein Feiertag=kein Feiertag
Zuletzt geändert von nw378 am 29. Dez 2023 16:10, insgesamt 2-mal geändert.
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von udo1toni »

Ich kann bestätigen, dass entgegen der Dokumentation die Datei mit der Übersetzung gar nicht verwendet wird, stattdessen übersetzt Ephemeris fröhlich, ohne dass die Datei überhaupt existiert.
Einen Hinweis, wie und wo man das fixen kann, suche ich aber auch gerade.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von peter-pan »

Ich bin auch gerade am suchen. Ich habe auch die Bemühungen von Jörg in 12/2021 im internationalen Forum gesehen. Aber es ist wohl seither nichts passiert, oder es wurde nichts gemacht bzw. es wurde nicht darauf reagiert.
Es sollte ja eigentlich nicht nötig sein, "von hinten durch die Brust ins Auge" mit einer zusätzlichen Transformation zu arbeiten.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von int5749 »

peter-pan hat geschrieben: 29. Dez 2023 16:12 Ich habe auch die Bemühungen von Jörg in 12/2021 im internationalen Forum gesehen. Aber es ist wohl seither nichts passiert, oder es wurde nichts gemacht bzw. es wurde nicht darauf reagiert.
:shock: Ich werde ge-stalked :? :lol: :lol:

Ich habe dazu mal ein neues Issue aufgemacht, mal sehen ob dort eine Reaktion kommt => Community
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: [solved] Ein Newbie benötigt Hife bei einer Rule

Beitrag von udo1toni »

So ist es :) Noch dazu wo die Übersetzung ja sehr wohl funktioniert, nur halt nicht mit einer selbst angelegten Datei, sondern nur über den Cache, den jollyday selbst verwaltet (wenn ich den Code richtig interpretiert habe... da kein "ernsthaftes" Java Program ohne hundertfache Weiterleitung um tausend Ecken auszukommen scheint, ist das für Nicht-Programmierer etwas schwer zu verstehen.
Bei mir entsteht immer wieder mal der Eindruck, dass diese Art Code zu schreiben Selbstzweck ist - wäre ja noch schöner, wenn jeder Hans und Franz da eingreifen könnte...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten