Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Gelöst] Astro-Zeiten unterschiedlich

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Astro-Zeiten unterschiedlich

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      diwoma @mickym last edited by

      @mickym
      Der Trigger funktioniert ja mit dieser Einstellung, die Funktion getAstroDate aber nicht.

      Kann man was über die Funktion nachlesen?
      Mich irritiert, dass der 2 Parameter ein numerischer Wert ist und nicht ein DateTime.
      Was sollte denn da für ein numerischer Wert angegeben werden?
      Wenn ich die Skripts im Forum nachbaue stimmt es nicht, in einem Blog woanders wird ein Datum eingegeben.
      Deshalb hätte ich gerne von irgendwo eine Beschreibung, was die Funktion für Übergabe-Parameter braucht.

      1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active last edited by mickym

        @diwoma sagte in Astro-Zeiten unterschiedlich:

        Mich irritiert, dass der 2 Parameter ein numerischer Wert ist und nicht ein DateTime.
        Was sollte denn da für ein numerischer Wert angegeben werden?

        Nun wenn ich die Threads hier lese "https://forum.iobroker.net/topic/8720/probleme-mit-astro-funktion" ist zwar schon alt, dann ist der

        1. Parameter ein String mit den üblichen wahrscheinlich aus der Bibliothek üblichen Bezeichnung (z. Bsp. wie in dem Thread "nightEnd")
        2. Parameter ist ein nummerischer Wert mit dem Du ein offset eintragen kannst, der addiert wird (oder bei negativen Werten subtrahiert wird).

        Der 2. Parameter scheint aber optional zu sein.

        D 1 Reply Last reply Reply Quote 0
        • D
          diwoma @mickym last edited by

          @mickym
          OK, das macht dann Sinn, wenn der zweite Parameter weggelassen wird, dann stimmt die Zeit.
          Das das nur ein Offset ist habe ich nicht gewusst. Komischerweise habe ich den Thread sogar durchgeblättert, aber das habe ich wahrscheinlich überlesen.

          Aber auf was ein Offset? Stunden, Tage ??
          wenn ich 1 angebe (für +1 Tag) ist es falsch.

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @diwoma last edited by mickym

            @diwoma Nee ich denke das ist offset in Minuten das dürfte komplett mit dem Parameter in der Adapterkonfig übereinstimmen:

            53f92f80-623a-4d4b-a599-a19f71c9a772-image.png

            das heisst bei mir ist es im Moment: 7:27, wenn Du in dem Adapter für den Offset zum Beispiel 2 eingibst - dann ist es 7:29 was als Sunrise kommt. Insofern ist der Offset immer falsch - es geht ja darum, dass Du mit dem Offset Deine Vorliebe quasi eingibst, die mit den offiziellen Zeitpunkten nichts zu tun haben.

            D 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @diwoma last edited by

              @diwoma sagte in Astro-Zeiten unterschiedlich:

              in der Konfiguration wird next sunrise ausgegeben

              welche?

              Meint ihr die von @mickym gepostete??

              @mickym sagte in Astro-Zeiten unterschiedlich:
              https://forum.iobroker.net/assets/uploads/files/1637316875401-88642057-df32-434c-a890-aaafa27d6c00-image.png

              Diese Zeiten sind nur für den Datenpunkt isDaytime

              D 1 Reply Last reply Reply Quote 0
              • D
                diwoma @mickym last edited by

                @mickym
                Im Skript steht:

                var today = new Date();
                var tomorrow = today.setDate(today.getDate()+1);
                var tomorrowNight = getAstroDate("night", tomorrow);
                

                Aber bei ist der Wert von today.getDate() heute aber 19. Was sollte das für ein Datum sein, ist mit dieser Funktion was falsch?

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @diwoma last edited by mickym

                  @diwoma Keine Ahnung - aber für mich sieht das eher so aus, dass der Skriptverfasser diesen 2. Parameter falsch verstanden hat. Da muss doch eine Zahl hin und kein Date Objekt.

                  Na nach dieser Doku - wäre es kein Offset sondern tatsächlich ein stateObject (Zeile 69):

                  https://www.kreyenborg.koeln/iobroker-astro-tageszeit-abfragen-und-in-datenpunkt-eintragen/

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    diwoma @Homoran last edited by

                    @homoran said in Astro-Zeiten unterschiedlich:

                    @diwoma sagte in Astro-Zeiten unterschiedlich:

                    in der Konfiguration wird next sunrise ausgegeben

                    welche?

                    Ich denke, bei dem der Trigger auf sunrise hört

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @diwoma last edited by

                      @diwoma sagte in Astro-Zeiten unterschiedlich:

                      @homoran said in Astro-Zeiten unterschiedlich:

                      @diwoma sagte in Astro-Zeiten unterschiedlich:
                      

                      in der Konfiguration wird next sunrise ausgegeben

                      welche?

                      Ich denke, bei dem der Trigger auf sunrise hört

                      ????
                      Welche Konfiguration meinst du?

                      D 1 Reply Last reply Reply Quote 0
                      • D
                        diwoma @mickym last edited by

                        @mickym
                        Du meinst also das ist nur ein Offset in Minuten und wenn ich Offset=0 eingebe, sollte das gleiche Ergebnis rauskommen. Tut es aber nicht. Der Wert muss was anders bedeuten

                        mickym 1 Reply Last reply Reply Quote 0
                        • D
                          diwoma @Homoran last edited by

                          @homoran said in Astro-Zeiten unterschiedlich:

                          ????
                          Welche Konfiguration meinst du?

                          Im Javascript-Adapter auf dem Astro-Tab

                          1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @diwoma last edited by mickym

                            @diwoma sagte in Astro-Zeiten unterschiedlich:

                            @mickym
                            Du meinst also das ist nur ein Offset in Minuten und wenn ich Offset=0 eingebe, sollte das gleiche Ergebnis rauskommen. Tut es aber nicht. Der Wert muss was anders bedeuten

                            Ja Du hast Recht - habe gerade mal die offizielle Doku gelesen :

                            6db969e0-ba60-4356-8051-5cb00c793f38-image.png

                            Also ist der 2. Parameter nicht der Offset - ist aber auch kein String oder eine Zahl sondern ein Date Objekt.

                            Sprich wenn Du einen Date-String hast musst erst ein Date Objekt generieren.

                            Und die 19 kommen raus, weil heute der 19. ist:

                            afceec6a-bf43-412b-abe3-f3d41ff949ff-image.png

                            Das ist damit klar - mit dem Skript sollte wirklich die Nacht von morgen rauskommen. In einem Date-Objekt ohne Parameter wird ja immer das aktuelle Datum genommen

                            var today = new Date();
                            var tomorrow = today.setDate(today.getDate()+1);
                            var tomorrowNight = getAstroDate("night", tomorrow);
                            

                            Also wird das Date Objekt mit set Date und einem Integer das Datumsobjekt auf den Tag des aktuellen Monats gesetzt:

                            Wenn ich mir hier die Beispiele ansehen:

                            a21a794b-8a76-4ddf-b808-ace480bc454b-image.png

                            dann ist

                            tomorrow = today.setDate(today.getDate()+1); gleich tomorrow = today.setDate(20); Somit hast Du in tomorrow das date Object von morgen.

                            und dann müsste es eigentlich passen, dass Du mit der astro Funktion den Sonnenaufgang von morgen bekommst.

                            1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @diwoma last edited by

                              @diwoma sagte in Astro-Zeiten unterschiedlich:

                              Und was mir auch noch etwas komisch vorkommt, die Funktion getAstroDate('sunrise', today) erwartet einen numerischen Wert als Parameter, das ist in diesem Fall der Tag (heute eben 19). Warum nicht das Datum?

                              Somit ist diese Aussage in Deinem Eingangspost verkehrt.

                              Es wird nicht ein numerischer Wert, sondern ein Datumsobjekt erwartet. Nur mit der Methode dateObj.setDate(Integer) - kannst Du das Date- Objekt auf einen anderes Datum setzen, dass Du dann der Astro Funktion übergibst.

                              1 Reply Last reply Reply Quote 0
                              • D
                                diwoma last edited by diwoma

                                @mickym
                                Ach du Sch...e 😬

                                Da muss was in der Definition der Funktion falsch sein. Wenn ich ein Datum übergebe ist der Parameter rot unterwellt, weil er der Intellisense nach ein numeric haben will. Aber es ist doch ein Datum und damit geht es.

                                War zwar etwas langsamer als Du, weil ich inzwischen herumprobiert habe, aber so ist mein Code:

                                var timestamp;
                                        var today = new Date();
                                        var tomorrow = today.setDate(today.getDate()+1);
                                    
                                        log('date    :' + today.toString());
                                        log('tomorrow:' + tomorrow.toString());
                                        
                                        timestamp = getAstroDate('sunrise');
                                        setState(idSunriseToday, timestamp.toLocaleTimeString());
                                        timestamp = getAstroDate('sunset');
                                        setState(idSunsetToday, timestamp.toLocaleTimeString());
                                    
                                        timestamp = getAstroDate('sunrise', tomorrow);
                                        setState(idSunriseTomorrow, timestamp.toLocaleTimeString());
                                        timestamp = getAstroDate('sunset', tomorrow);
                                        setState(idSunsetTomorrow, timestamp.toLocaleTimeString());
                                

                                Vielen Dank für die Hilfe.

                                mickym 1 Reply Last reply Reply Quote 1
                                • mickym
                                  mickym Most Active @diwoma last edited by

                                  @diwoma Na mit gemeinsamer Recherche haben wir es hinbekommen. 😉 - So was freut mich immer am meisten. 😉

                                  F 1 Reply Last reply Reply Quote 0
                                  • F
                                    fastfoot @mickym last edited by

                                    @mickym, @diwoma zur Ergänzung:
                                    getAstroDate() akzeptiert als 2ten Parameter entweder ein Datum oder einen timestamp, also die millisekunden seit 1.1.1970. Das Datum wird unterkringelt weil es in der Funktionsdefinition nicht angegeben ist. Just gestern habe ich einen PR erstellt welcher u.a. diesen 'Fehler' behebt, welcher aber eher kosmetisch ist. Fehlt der 2te Parameter, so nimmt getAstroDate() den laufenden Tag. Die o.g. Astro Settings in der Instanz wirken sich nicht auf die Berechnung aus, die Koordinaten aber natürlich schon.

                                    Es empfiehlt sich im Datum die Mittagszeit mit anzugeben sonst erhält man u.U. die Daten des Vortages.

                                    let tomorrow = new Date();
                                    tomorrow.setDate(tomorrow.getDate() + 1);
                                    tomorrow.setHours(12, 0, 0, 0);
                                    log(tomorrow)
                                    
                                    let sunrise = getAstroDate('sunrise', tomorrow)
                                    log(sunrise)
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    729
                                    Online

                                    31.9k
                                    Users

                                    80.2k
                                    Topics

                                    1.3m
                                    Posts

                                    4
                                    22
                                    1295
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo