Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] From Dusk Till Dawn

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] From Dusk Till Dawn

    This topic has been deleted. Only users with topic management privileges can see it.
    • ldittmar
      ldittmar Developer last edited by

      Hallo Leute,

      ich würde gerne bei einem Ereignis etwas ausführen, wenn es gerade zeitlich zwischen "dusk" und "dawn" ist, aber irgendwie klappt es nicht. Ich habe versucht Astrozeiten zu holen, die in String-Uhrzeit umzuwandel und dann mit "between" zu veegleichen, aber ohne erfolg. (bin gerade unterwegs und kann ggf später mein code posten).

      Grüße,

      ldittmar

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

        Ist das hier etwas für dich.

        http://www.iobroker.net/?page_id=3708&lang=de

        Gruß

        Rainer

        1 Reply Last reply Reply Quote 0
        • ldittmar
          ldittmar Developer last edited by

          Hi Rainer,

          danke für die schnelle Antwort. JS-Technisch bekomme ich das hin, aber ich wollte wissen ob es vielleicht mit compareTime "between" irgendwie machbar wäre… eine Idee wäre vielleicht auch das compareTime so zu erweitern, dass auch die Astrobegriffe akzeptiert werden. Sowas wie compareTime("dusk", "dawn", "between").

          Grüße,

          ldittmar

          1 Reply Last reply Reply Quote 0
          • P
            pix last edited by

            Vielleicht hilft dir die Funktion https://github.com/ioBroker/ioBroker.javascript#getastrodate oder auch https://github.com/ioBroker/ioBroker.javascript#isastroday.

            Mit getAstroDate kannst du ja abfragen, wann zB der nächste Sonnenuntergang ist und die Zeit speichern, um sie dann mit compareTime zu verwenden.

            Gruß

            Pix

            1 Reply Last reply Reply Quote 0
            • ldittmar
              ldittmar Developer last edited by

              Danke Rainer und Pix,

              ich habe mal alles angeschaut und eine Lösung gefunden:

              function compareAstroTime(startTime, endTime, operation, time) {
                  var astroList = ["sunrise", "sunset", "sunriseEnd", "sunsetStart", "dawn", "dusk", "nauticalDawn", "nauticalDusk", "nightEnd", "night", "goldenHourEnd", "goldenHour"];
              
                  if (typeof startTime === 'string') {
                      if (astroList.indexOf(startTime) !== -1) {
                          startTime = getAstroDate(startTime);
                          startTime = startTime.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false});
                          log(startTime);
                      }
                  }
              
                  if (endTime && typeof endTime === 'string') {
                      if (astroList.indexOf(endTime) !== -1) {
                          endTime = getAstroDate(endTime);
                          endTime = endTime.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false});
                          log(endTime);
                      }
                  }
              
                  return compareTime(startTime, endTime, operation, time);
              
              }
              
              

              Diese Funktion könnte man später einfach im JS-Adapter in der Funktion compareTime einbauen. Zur Zeit nutze ich es als globale Funktion. Ich habe mich auch an den Adapter orientiert, damit man ggf. es einfach einbauen kann. Ich schaue praktisch ob der String der kommt eine Astrozeit ist und wenn ja übersetze ich es in Stunden/Minuten und übergebe weiter an compareTime().

              Edit: Das einzige was hier "blöd" ist, ist die Tatsache, dass sich die Astrozeiten immer auf heute beziehen… ist aber bei so eine kleine Differenz wahrscheinlich zu verkraften. 😉

              Grüße,

              ldittmar

              1 Reply Last reply Reply Quote 0
              • rantanplan
                rantanplan last edited by

                @ldittmar:

                Hallo Leute,

                ich würde gerne bei einem Ereignis etwas ausführen, wenn es gerade zeitlich zwischen "dusk" und "dawn" ist, aber irgendwie klappt es nicht. Ich habe versucht Astrozeiten zu holen, die in String-Uhrzeit umzuwandel und dann mit "between" zu veegleichen, aber ohne erfolg. (bin gerade unterwegs und kann ggf später mein code posten).

                Grüße,

                ldittmar `

                Hallo ldttmar

                Schau mal hier http://forum.iobroker.net/viewtopic.php … 891#p48209

                Vielleicht kannst Du mit diesem Prinzip etwas anfangen.

                Grüße

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                738
                Online

                31.7k
                Users

                79.8k
                Topics

                1.3m
                Posts

                4
                6
                1042
                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