Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Frage zu compareTime

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] Frage zu compareTime

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

      Hi,

      ich habe mal eine Frage zu der Verwendung von compareTime:

      Wenn ich zwischen 20 Uhr Abends und 9 Uhr Früh den "Schlafmodus" via Tabletbutton einschalten möchte funktioniert das von 20 - 24 Uhr, jedoch nicht mehr von 00:00 - 9 Uhr. Aktuell nutze ich einen Workaround doch begreifen warum das nicht geht oder was ich falsch mache will ich nicht so ganz.

      Hier mal der Codeschnippsel:

      // Schlafen nacht aktiv schalten
      on("javascript.0.Schlafmodus.Schlafmodus_Status", function(dp) {
          if(getState("javascript.0.Schlafmodus.Schlafmodus_Status").val && compareTime("20:00", "09:00", "between") && getState("javascript.0.Automation.Automatikfunktioen").val) 
          {
           sprachausgabe("SchlafmodusNachtEin");
      
           setStateDelayed("hm-rpc.0.NEQXXXX.4.MANU_MODE", 18,  1000);
           setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 18,  2000);
           setStateDelayed("hm-rpc.0.NEQXXXX.4.MANU_MODE", 4.5,  3000);
           setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5,  4000);
           setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5,  5000);
           setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5,  6000);
           setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5,  7000);
           setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5,  8000);
      
           setStateDelayed("hm-rpc.0.NEQXXXX.2.MANU_MODE", 19.5,  9000);
      
           log("Schlafmodus Nachts eingeschalten");
          }
      });
      

      Wenn ich es so mache funktionierts:

      (compareTime("20:00", "24:00", "between") || compareTime("00:00", "09:00", "between"))
      

      Vielleicht kann mir hier mal jemand auf die Sprünge helfen.

      Merci

      Peoples

      1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active last edited by

        compareTime kenne ich nicht.

        Ich mache dies mit dem Script von der iobroker seite:

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

        Dieses habe ich als globales Script bei mir hinterlegt.

        In meinen anderen Scripten prüfe ich dann ob das Script bei Ausführung innerhalb der Zeit ist:

        var Zeit1 = isTimeInRange('06:00:00', '21:00:00');

        Wenn wir innerhalb der Zeit sind, dann true.

        Also in deinem Fall:

        o.g. Script als global hinterlegen.

        Dann in deinem Script:

        var Zeit1 = isTimeInRange('09:00:00', '20:00:00');

        Wenn das Ergebnis dann false, dann bist du in deinem Zeitraum 20-09 Uhr.

        mfg

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

          Hallo,

          ich mache das auch wie bahnuhr mit isTimeInRange.

          Hast du den Tippfehler in deinem Code gesehen?

          Automatikfunktioen
          

          Vielleicht bringt der etwas durcheinander? 8-)

          Gruß´

          Pix

          EDIT:

          Du kannst die on()-Funktion etwas abkürzen:

          // Schlafen nacht aktiv schalten
          on("javascript.0.Schlafmodus.Schlafmodus_Status", function(dp) {
              if(dp.state.val && compareTime("20:00", "09:00", "between") && getState("javascript.0.Automation.Automatikfunktioen").val) 
              {
          
          
          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            @peoples:

            Wenn ich zwischen 20 Uhr Abends und 9 Uhr Früh den "Schlafmodus" via Tabletbutton einschalten möchte funktioniert das von 20 - 24 Uhr, jedoch nicht mehr von 00:00 - 9 Uhr. `
            Der Fehler wurde im JS-Adapter korrigiert, aber noch nicht in der npm-Version. Installiere bitte den JS-Adapter von github !

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

              Ich nutze auch die compareTime Funktion und finde es echt cool, denn man kann auch sowas wie compareTime("dusk", "dawn", "between") schreiben… aber auch ich hab das Problem, dass ab 00:00 Uhr nichts mehr geht. Das scheint ein Bug zu sein. Ich schaue mir mal die Funktion compareTime an und melde mich wenn es gefixt ist. 😉

              Grüße,

              ldittmar

              Edit: Da war jemand schneller 8-) - ist gefixt!

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

                Ihr seid die "Wucht in Dosen"!

                Habe das Update von Github installiert und werde heute Abend sehen ob alles klappt.

                Danke schon mal hierfür.

                @Pix

                Der Schreibfehler hat keine Fehler verursacht, da ich Ihn konsequent überall in jedem script gemacht habe :lol:

                Und den Tipp mit dem "kürzen" habe ich auch gleich umgesetzt.

                Auch hierfür Danke

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

                  @bahnuhr:

                  Dann in deinem Script:

                  var Zeit1 = isTimeInRange('09:00:00', '20:00:00');

                  Wenn das Ergebnis dann false, dann bist du in deinem Zeitraum 20-09 Uhr. `
                  Diese Methode funktioniert auch mit dem nicht korrigierten compareTime()

                      if(getState("javascript.0.Schlafmodus.Schlafmodus_Status").val && !compareTime("09:00", "20:00", "between") && getState("javascript.0.Automation.Automatikfunktioen").val)
                  
                  

                  oder

                      if(getState("javascript.0.Schlafmodus.Schlafmodus_Status").val && compareTime("09:00", "20:00", "not between") && getState("javascript.0.Automation.Automatikfunktioen").val)
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  818
                  Online

                  31.7k
                  Users

                  79.8k
                  Topics

                  1.3m
                  Posts

                  5
                  7
                  3386
                  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