Ankündigung

Einklappen
Keine Ankündigung bisher.

Ephemeris Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Zitat von udo1toni Beitrag anzeigen
    Man müsste das also selbst basteln, mit vier Einträg die ungefähr so lauten:
    Code:
    <tns:FixedWeekdayRelativeToFixed which="FIRST" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="FOURTH_ADVENT">
    <tns:day month="DECEMBER" day="25"/>
    </tns:FixedWeekdayRelativeToFixed>
    (die anderen wären dann SECOND, THIRD und FOURTH als which...)
    Ich hab mich aber noch nicht eingehend damit beschäftigt.
    Wie ich einen (den vierten) Advent abfragen konnte
    <?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:RelativeToFixed descriptionPropertiesKey="FOURTH_ADVENT">
    <tns:Weekday>SUNDAY</tns:Weekday>
    <tns:When>BEFORE</tns:When>
    <tns:date month="DECEMBER" day="25"/>
    </tns:RelativeToFixed>
    </tns:Holidays>
    </tns:Configuration>
    Derzeit versuche ich
    <?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:RelativeToFixed descriptionPropertiesKey="FIRST_ADVENT">
    <tns:Which>FOURTH</tns:Which>
    <tns:Weekday>SUNDAY</tns:Weekday>
    <tns:When>BEFORE</tns:When>
    <tns:date month="DECEMBER" day="25"/>
    </tns:RelativeToFixed>
    <tns:RelativeToFixed descriptionPropertiesKey="SECOND_ADVENT">
    <tns:Which>THIRD</tns:Which>
    <tns:Weekday>SUNDAY</tns:Weekday>
    <tns:When>BEFORE</tns:When>
    <tns:date month="DECEMBER" day="25"/>
    </tns:RelativeToFixed>
    <tns:RelativeToFixed descriptionPropertiesKey="THIRD_ADVENT">
    <tns:Which>SECOND</tns:Which>
    <tns:Weekday>SUNDAY</tns:Weekday>
    <tns:When>BEFORE</tns:When>
    <tns:date month="DECEMBER" day="25"/>
    </tns:RelativeToFixed>
    <tns:RelativeToFixed descriptionPropertiesKey="FOURTH_ADVENT">
    <tns:Which>FIRST</tns:Which>
    <tns:Weekday>SUNDAY</tns:Weekday>
    <tns:When>BEFORE</tns:When>
    <tns:date month="DECEMBER" day="25"/>
    </tns:RelativeToFixed>
    </tns:Holidays>
    </tns:Configuration>
    Rule
    Code:
    logInfo("Test", "Erster {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-11-29").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
    logInfo("Test", "Zweiter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-06").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
    logInfo("Test", "Dritter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-13").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
    logInfo("Test", "Vierter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-20").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
    Ergebnis
    00:34:23.807 [INFO ] [g.eclipse.smarthome.model.script.Test] - Erster {}
    00:34:23.823 [INFO ] [g.eclipse.smarthome.model.script.Test] - Zweiter {}
    00:34:23.823 [INFO ] [g.eclipse.smarthome.model.script.Test] - Dritter {}
    00:34:23.854 [INFO ] [g.eclipse.smarthome.model.script.Test] - Vierter THIRD_ADVENT
    Zuletzt geändert von JoergA; 15.02.2020, 00:35.

    Kommentar


      #17
      Also ich habe da noch weiter getestet und mit auch den Source Code zu "RelativeToFixed" angeschaut => Klick
      und daher wollte ich hier mal ein Update posten:


      Dort gibt es keine Definition für "FIRST", somit habe ich dies entfernt und divers umgestellt und OH immer neu gestartet, aber derzeit will es einfach nicht funktionieren.
      Code:
      <?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:RelativeToFixed descriptionPropertiesKey="FIRST_ADVENT">
                      <tns:Weekday>SUNDAY</tns:Weekday>
                      <tns:Which>FOURTH</tns:Which>
                      <tns:When>BEFORE</tns:When>
                      <tns:Date month="DECEMBER" day="25"/>
                  </tns:RelativeToFixed>
                  <tns:RelativeToFixed descriptionPropertiesKey="SECOND_ADVENT">
                      <tns:Which>THIRD</tns:Which>
                      <tns:Weekday>SUNDAY</tns:Weekday>
                      <tns:When>BEFORE</tns:When>
                      <tns:Date month="DECEMBER" day="25"/>
                  </tns:RelativeToFixed>
                  <tns:RelativeToFixed descriptionPropertiesKey="THIRD_ADVENT">
                      <tns:Which>SECOND</tns:Which>
                      <tns:Weekday>SUNDAY</tns:Weekday>
                      <tns:When>BEFORE</tns:When>
                      <tns:Date month="DECEMBER" day="25"/>
                  </tns:RelativeToFixed>
                  <tns:RelativeToFixed descriptionPropertiesKey="FOURTH_ADVENT">
                      <tns:Weekday>SUNDAY</tns:Weekday>
                      <tns:When>BEFORE</tns:When>
                      <tns:Date month="DECEMBER" day="25"/>
                  </tns:RelativeToFixed>
          </tns:Holidays>
      </tns:Configuration>
      Rules (einfach um verschiedene Daten abzufragen)
      Code:
      logInfo("Test", "Erster {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-11-29").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Zweiter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-06").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Dritter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-12").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Dritter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-13").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Dritter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-14").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Dritter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-16").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Vierter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-19").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Vierter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-20").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      logInfo("Test", "Vierter {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-21").zonedDateTime, 'd:/OpenHAB/conf/services/specialdays.xml'))
      Ergebnis (ernüchternd)
      Code:
      21:57:47.323 [INFO ] [g.eclipse.smarthome.model.script.Test] - Erster {}
      21:57:47.338 [INFO ] [g.eclipse.smarthome.model.script.Test] - Zweiter {}
      21:57:47.354 [INFO ] [g.eclipse.smarthome.model.script.Test] - Dritter {}
      21:57:47.354 [INFO ] [g.eclipse.smarthome.model.script.Test] - Dritter {}
      21:57:47.370 [INFO ] [g.eclipse.smarthome.model.script.Test] - Dritter {}
      21:57:47.385 [INFO ] [g.eclipse.smarthome.model.script.Test] - Dritter {}
      21:57:47.385 [INFO ] [g.eclipse.smarthome.model.script.Test] - Vierter {}
      21:57:47.401 [INFO ] [g.eclipse.smarthome.model.script.Test] - Vierter SECOND_ADVENT
      21:57:47.416 [INFO ] [g.eclipse.smarthome.model.script.Test] - Vierter {}
      Warum kommt dort der Zweite Advent raus?? Also diese Action ist weder selbsterklärend, noch scheint sie - ausser mit den mitgelieferten Werten - nicht durchgängig zu funktionieren. Feste Daten scheinen kein Problem zu sein, aber dazu braucht es nicht wirklich eine solche Funktion/Action

      Kommentar


        #18
        Hallo zusammen,

        für alle, die es interessiert, ich habe dies nach einer längeren Phase des studierens der ganzem Parser FIles und diverser Holiday FIles für mich lösen können.
        Der benötigte Parser lautet => FixedWeekdayRelativeToFixed

        Code:
                <tns:FixedWeekdayRelativeToFixed which="FIRST" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="FOURTH_ADVENT">
                    <tns:day month="DECEMBER" day="25"/>
                </tns:FixedWeekdayRelativeToFixed>
                <tns:FixedWeekdayRelativeToFixed which="SECOND" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="THIRD_ADVENT">
                    <tns:day month="DECEMBER" day="25"/>
                </tns:FixedWeekdayRelativeToFixed>
                <tns:FixedWeekdayRelativeToFixed which="THIRD" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="SECOND_ADVENT">
                    <tns:day month="DECEMBER" day="25"/>
                </tns:FixedWeekdayRelativeToFixed>
                <tns:FixedWeekdayRelativeToFixed which="FOURTH" weekday="SUNDAY" when="BEFORE" descriptionPropertiesKey="FIRST_ADVENT">
                    <tns:day month="DECEMBER" day="25"/>
                </tns:FixedWeekdayRelativeToFixed>
        Meine Test Sektion in einer Rules
        Code:
        logInfo("Test", "Vierter {}", Ephemeris.getBankHolidayName((new DateTimeType("2020-12-20").zonedDateTime), 'd:/OpenHAB/conf/services/birthdays.xml'))
        logInfo("Test", "Dritter {}", Ephemeris.getBankHolidayName((new DateTimeType("2020-12-13").zonedDateTime), 'd:/OpenHAB/conf/services/birthdays.xml'))
        logInfo("Test", "Zweiter {}", Ephemeris.getBankHolidayName((new DateTimeType("2020-12-06").zonedDateTime), 'd:/OpenHAB/conf/services/birthdays.xml'))
        logInfo("Test", "Erster {}", Ephemeris.getBankHolidayName((new DateTimeType("2020-11-29").zonedDateTime), 'd:/OpenHAB/conf/services/birthdays.xml'))
        logInfo("Test", "Erster {}", Ephemeris.getBankHolidayName((new DateTimeType("2020-11-30").zonedDateTime), 'd:/OpenHAB/conf/services/birthdays.xml'))
        Ausgabe im Log (bewusst mir einem falschen Datum)
        20:05:56.941 [INFO ] [g.eclipse.smarthome.model.script.Test] - Vierter FOURTH_ADVENT
        20:05:56.941 [INFO ] [g.eclipse.smarthome.model.script.Test] - Dritter THIRD_ADVENT
        20:05:56.957 [INFO ] [g.eclipse.smarthome.model.script.Test] - Zweiter SECOND_ADVENT
        20:05:56.957 [INFO ] [g.eclipse.smarthome.model.script.Test] - Erster FIRST_ADVENT
        20:05:56.972 [INFO ] [g.eclipse.smarthome.model.script.Test] - Erster {}
        Somir kann nun der Umstieg erfolgen

        Viele Grüße,

        Jörg

        Kommentar


          #19
          Sehr cool!

          Kommentar


            #20
            Next Update dazu.

            Heiligabend ist per definition erst einmal kein Feiertag und nicht in der holidays_de.xml enthalten.
            Eine Eintragung löst mir dann zwar "CHRISTMAS_EVE" auf, aber es erfolgt keine Übersetzung ins deutsche, obwohl dies in der holiday_descriptions_de.properties enthalten ist. Dies konnte ich mit einem weiteren Parameter lösen => localizedType="OFFICIAL_HOLIDAY"

            Somit sieht mein Eintrag dafür wie folgt aus.
            Code:
            <tns:Fixed month="DECEMBER" day="24" descriptionPropertiesKey="CHRISTMAS_EVE" localizedType="OFFICIAL_HOLIDAY"/><!-- personally added -->
            und es wird nun Heiligabend aufgelöst.

            Leider funktioniert dies natürlich nicht bei ???? Genau, den Advents-Sonntagen.
            Diese sind nicht in der holiday_descriptions_de.properties enthalten und hier haben bisher weder ein manueller Eintrag, Definition als official holiday nebst Neustart von OpenHab geholfen. Sicher könnte man dies über eine Rule oder auch eine transform lösen, aber mich wurmt das schon.

            Falls noch jemand an dieser Stelle testen möchte, würde ich mich gerne weiter dazu austauschen

            Als nächstes teste ich mal Heiligabend als INOFFICIAL HOLIDAY, ob dann die Auflösung noch funktioniert, denn manche müssen ja an Heiligabend oder Sylvester arbeiten (Ich habe da frei, ohne Urlaub nehmen zu müssen möchte dies aber dennoch korrekt definieren.

            Kommentar

            Lädt...
            X