Ankündigung

Einklappen
Keine Ankündigung bisher.

Ephemeris Funktion

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

    Ephemeris Funktion

    Also, nachdem ich nun auf OH 2.5 bin, wollte ich mir mal die neue Funktion ephemeris anschauen.

    Flugs in PaperUI aktiviert, und schon gibt es Fehler im Log
    Code:
    2020-02-12 21:33:10.624 [ERROR] [org.openhab.core.ephemeris ] - bundle org.openhab.core.ephemeris:2.5.0 (143)[org.openhab.ephemeris(87)] : The activate method has thrown an exception
    java.lang.IllegalArgumentException: No enum constant java.time.DayOfWeek.SATURDAY,SUNDAY
    at java.lang.Enum.valueOf(Unknown Source) ~[?:1.8.0_171]
    at java.time.DayOfWeek.valueOf(Unknown Source) ~[?:1.8.0_171]
    at org.eclipse.smarthome.core.ephemeris.internal.Ephe merisManagerImpl.addDayset(EphemerisManagerImpl.ja va:330) ~[?:?]
    at org.eclipse.smarthome.core.ephemeris.internal.Ephe merisManagerImpl.lambda$2(EphemerisManagerImpl.jav a:151) ~[?:?]
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept (Unknown Source) ~[?:1.8.0_171]
    at java.util.stream.ReferencePipeline$2$1.accept(Unkn own Source) ~[?:1.8.0_171]
    at java.util.Iterator.forEachRemaining(Unknown Source) ~[?:1.8.0_171]
    at java.util.Spliterators$IteratorSpliterator.forEach Remaining(Unknown Source) ~[?:1.8.0_171]
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:1.8.0_171]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto( Unknown Source) ~[?:1.8.0_171]
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequ ential(Unknown Source) ~[?:1.8.0_171]
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evalua teSequential(Unknown Source) ~[?:1.8.0_171]
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:1.8.0_171]
    at java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[?:1.8.0_171]
    at org.eclipse.smarthome.core.ephemeris.internal.Ephe merisManagerImpl.modified(EphemerisManagerImpl.jav a:131) ~[?:?]
    at org.eclipse.smarthome.core.ephemeris.internal.Ephe merisManagerImpl.activate(EphemerisManagerImpl.jav a:126) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method) ~[?:1.8.0_171]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source) ~[?:1.8.0_171]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source) ~[?:1.8.0_171]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_171]
    at org.apache.felix.scr.impl.inject.methods.BaseMetho d.invokeMethod(BaseMethod.java:228) ~[bundleFile:?]
    at org.apache.felix.scr.impl.inject.methods.BaseMetho d.access$500(BaseMethod.java:41) ~[bundleFile:?]
    at org.apache.felix.scr.impl.inject.methods.BaseMetho d$Resolved.invoke(BaseMethod.java:664) ~[bundleFile:?]
    at org.apache.felix.scr.impl.inject.methods.BaseMetho d.invoke(BaseMethod.java:510) [bundleFile:?]
    at org.apache.felix.scr.impl.inject.methods.ActivateM ethod.invoke(ActivateMethod.java:317) [bundleFile:?]
    at org.apache.felix.scr.impl.inject.methods.ActivateM ethod.invoke(ActivateMethod.java:307) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.SingleComponentM anager.createImplementationObject(SingleComponentM anager.java:340) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.SingleComponentM anager.createComponent(SingleComponentManager.java :114) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.SingleComponentM anager.getService(SingleComponentManager.java:982) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.SingleComponentM anager.getServiceInternal(SingleComponentManager.j ava:955) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.SingleComponentM anager.getService(SingleComponentManager.java:900) [bundleFile:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceF actoryUse$1.run(ServiceFactoryUse.java:212) [org.eclipse.osgi-3.12.100.jar:?]
    at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_171]
    at org.eclipse.osgi.internal.serviceregistry.ServiceF actoryUse.factoryGetService(ServiceFactoryUse.java :210) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceF actoryUse.getService(ServiceFactoryUse.java:111) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceC onsumer$2.getService(ServiceConsumer.java:45) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceR egistrationImpl.getService(ServiceRegistrationImpl .java:508) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceR egistry.getService(ServiceRegistry.java:461) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.framework.BundleContextI mpl.getService(BundleContextImpl.java:624) [org.eclipse.osgi-3.12.100.jar:?]
    at org.apache.felix.scr.impl.manager.SingleRefPair.ge tServiceObject(SingleRefPair.java:86) [bundleFile:?]
    at org.apache.felix.scr.impl.inject.BindParameters.ge tServiceObject(BindParameters.java:47) [bundleFile:?]
    at org.apache.felix.scr.impl.inject.methods.BindMetho d.getServiceObject(BindMethod.java:664) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.DependencyManage r.getServiceObject(DependencyManager.java:2308) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.DependencyManage r$SingleStaticCustomizer.prebind(DependencyManager .java:1154) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.DependencyManage r.prebind(DependencyManager.java:1568) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.AbstractComponen tManager.collectDependencies(AbstractComponentMana ger.java:1029) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.SingleComponentM anager.getServiceInternal(SingleComponentManager.j ava:935) [bundleFile:?]
    at org.apache.felix.scr.impl.manager.SingleComponentM anager.getService(SingleComponentManager.java:900) [bundleFile:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceF actoryUse$1.run(ServiceFactoryUse.java:212) [org.eclipse.osgi-3.12.100.jar:?]
    at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_171]
    at org.eclipse.osgi.internal.serviceregistry.ServiceF actoryUse.factoryGetService(ServiceFactoryUse.java :210) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceF actoryUse.getService(ServiceFactoryUse.java:111) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceC onsumer$2.getService(ServiceConsumer.java:45) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceR egistrationImpl.getService(ServiceRegistrationImpl .java:508) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.serviceregistry.ServiceR egistry.getService(ServiceRegistry.java:461) [org.eclipse.osgi-3.12.100.jar:?]
    at org.eclipse.osgi.internal.framework.BundleContextI mpl.getService(BundleContextImpl.java:624) [org.eclipse.osgi-3.12.100.jar:?]
    Die Wochentage kann ich ja in der PaperUI einstellen, was ich auch dort vorgenommen habe.

    Nutzt dies schon jemand??

    #2
    Zitat von JoergA Beitrag anzeigen
    Die Wochentage kann ich ja in der PaperUI einstellen, was ich auch dort vorgenommen habe.
    Nein, hier gibt es immer noch einen Fehler, du musst das über die cfg einstellen:

    https://github.com/openhab/openhab-core/issues/1281
    https://community.openhab.org/t/rule...8011/6?u=sihui

    Kommentar


      #3
      Zitat von sihui Beitrag anzeigen
      ehler, du musst das über die cfg einstellen:
      Zitat von sihui Beitrag anzeigen
      s imm
      Yep, dies klappt nun im grundsäzlichen, jetzt hapert es an getBankHolidayName(<datetime>)
      name of the holiday on the day defined by the ZonedDateTime <datetime>, null if that day is not a bank holiday
      wenn ich versuche einen standard Feiertag abzufragen, kommt immer NULL zurück

      Ephemeris.getBankHolidayName(2007-12-03T10:15:30+01:00 Europe/Paris)
      oder
      Ephemeris.getBankHolidayName(2007-12-03)
      oder
      Ephemeris.getBankHolidayName(2007-12-03T00:00:00)

      Ao ganz werde ich mit der Action noch nicht warm.

      Kommentar


        #4
        Ich glaube nicht, dass Du das Datum einfach so hinschreiben kannst.

        Was ist denn der 3.12.2007 für ein Feiertag?

        Kommentar


          #5
          hier noch ein vielleicht hilfreicher link

          https://blog.zf2601.de/2019/12/ephem...de-geburtstag/

          Kommentar


            #6
            Zitat von udo1toni Beitrag anzeigen
            Ich glaube nicht, dass Du das Datum einfach so hinschreiben kannst.

            Was ist denn der 3.12.2007 für ein Feiertag?
            Sorry, copy paste aus den Tests, ich hatte dies auf den 25.12.2020 gelegt und auchmit allen Daten gespielt ;-)

            Kommentar


              #7
              Zitat von migal Beitrag anzeigen
              hier noch ein vielleicht hilfreicher link

              https://blog.zf2601.de/2019/12/ephem...de-geburtstag/
              Danke, aber auch dort wird kein Datum abgefragt. Diese Funktion habe ich bisher noch nicht als Beispiel gefunden oder gar zum laufen bekommen.

              Kommentar


                #8
                Was ich derzeit auch nicht finde, ist der 1. Advent

                Kommentar


                  #9
                  Der Punkt ist, Du musst ziemlich sicher das Datum als DateTime übergeben, also z.B. so:
                  Ephemeris.getBankHolidayName(parse("2020-12-25"))

                  Welche Feiertage enthalten sind, weiß ich natürlich nicht, es gibt aber hier https://github.com/svendiedrichsen/jollyday den Source Code, dort ist in den Definitionen tatsächlich kein Adventssonntag gelistet. 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.

                  Kommentar


                    #10
                    Zitat von udo1toni Beitrag anzeigen
                    Der Punkt ist, Du musst ziemlich sicher das Datum als DateTime übergeben, also z.B. so:
                    Ephemeris.getBankHolidayName(parse("2020-12-25"))
                    Das hat so leider auch nicht funktiniert:
                    Type mismatch: cannot convert from DateTime to ZonedDateTime(org.eclipse.xtext.xbase.validation.I ssueCodes.incompatible_types)
                    Aber der Denkanstoß hat geholfen und ich habe dies nun so lösen können
                    Code:
                    Ephemeris.getBankHolidayName(new DateTimeType("2020-12-25").zonedDateTime)
                    Ergbenis
                    10:07:20.420 [INFO ] [g.eclipse.smarthome.model.script.Test] - FIRST_CHRISTMAS_DAY
                    Dies alles ohne Angabe einer XML, also nimmt er entweder die, welche ich unter \Services abgelegt habe oder dies ist Standard.

                    Bzgl. des Adventsontags, versucht ich dies mal mit Deinem Code und werde dann (wenn ich Zeit hatte dies zu testen) berichten.

                    Kommentar


                      #11
                      Ach ja, zonedDateTime... ich wusste, da fehlte noch was...

                      Mein Codeschnipsel ist nur ein Schnipsel, das ist nicht der vollständige 4. Advent. Irgendwo muss die xml Datei mit der Definition rumliegen, in der die Feiertage drin stehen. Allerdings wird man die nicht bearbeiten, denn im Zweifel wird die Datei beim nächsten Update übeerschrieben.

                      Kommentar


                        #12
                        Zitat von udo1toni Beitrag anzeigen
                        Ach ja, zonedDateTime... ich wusste, da fehlte noch was...
                        Hat mir ja trotzdem geholfen ;-) Danke

                        Zitat von udo1toni Beitrag anzeigen
                        Mein Codeschnipsel ist nur ein Schnipsel, das ist nicht der vollständige 4. Advent. Irgendwo muss die xml Datei mit der Definition rumliegen, in der die Feiertage drin stehen. Allerdings wird man die nicht bearbeiten, denn im Zweifel wird die Datei beim nächsten Update übeerschrieben.
                        Derzeit kämpfe ich noch mit dem Aufruf ein Datei
                        Code:
                        logInfo("Test", "{}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-22").zonedDateTime))
                        logInfo("Test", "File {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-22").zonedDateTime), 'services/holiday.xml')
                        logInfo("Test", "File 2 {}", Ephemeris.getBankHolidayName(new DateTimeType("2020-12-22").zonedDateTime), 'd:/OpenHAB/conf/services/holiday.xml')
                        liefert

                        20:18:49.084 [INFO ] [g.eclipse.smarthome.model.script.Test] - FIRST_CHRISTMAS_DAY
                        20:18:49.163 [INFO ] [g.eclipse.smarthome.model.script.Test] - File null
                        20:18:49.366 [INFO ] [g.eclipse.smarthome.model.script.Test] - File 2 null

                        Kommentar


                          #13
                          Hast Du es mal ohne Pfad probiert?

                          Kommentar


                            #14
                            OK, ich bin schon mal weiter gekommen und kann nun auf die Dateien zugreifen.
                            Nervig ist schon, das Änderungen an den xml Dateien einen Neustart von OH bedingen

                            Einen Advent kann ich auch auslesen, mit allen 4ren habe ich noch Probleme.

                            Kommentar


                              #15
                              Zitat von udo1toni Beitrag anzeigen
                              Hast Du es mal ohne Pfad probiert?
                              Da hat sich Deine Antwort mit meinen Test überschnitten. Vollständiger Pfad und die Klammern an der richtigen Stelle waren das Geheimnis

                              Kommentar

                              Lädt...
                              X