Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Funktion: Prüfen, ob innerhalb eines Zeitfensters

    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

    Funktion: Prüfen, ob innerhalb eines Zeitfensters

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

      Hallo Zusammen,

      ich habe über die globalen Funktionen eine JavaScript Funktion geschrieben, mittels der man prüfen kann, ob die aktuelle Zeit innerhalb eines Zeitfensters liegt. In meinem Fall verwende ich das beispielsweise beim Ausschalten des Fernsehers. Geschieht dies zwischen 21:30 Uhr und 5:00 Uhr gehe ich davon aus, dass ich schlafen gehe. Mit dieser Funktion können die Zeiträume auch tagesübergreifend gemacht werden.

      Funktionsaufruf

      on({
          id: "onkyo.0.system-power"/*system-power*/,
          change: "ne",
          val: "standby",
          logic: "and"
      }, function (obj) {
          if(isTimeInRange('21:30:00', '05:00:00')) {
              // Programm, wenn ich schlafen gehe (Licht ein und zeitverzögert aus. Schlafzimmerlicht gedimmt einschalten, Zirkulationsleitung zeitversetzt ausschalten.
          }
      

      Funktion (am besten als globales Script einbinden, damit es in jedem Script genutzt werden kann)

      function currentDate() {
          var d = new Date();
          return new Date(d.getFullYear(), d.getMonth(), d.getDate());
      }
      function addTime(strTime) {
          var time = strTime.split(':');
          var d = currentDate();
          d.setHours(time[0]);
          d.setMinutes(time[1]);
          d.setSeconds(time[2]);
          return d;
      }
      function isTimeInRange(strLower, strUpper) {
          var now = new Date();
          var lower = addTime(strLower);
          var upper = addTime(strUpper);
          var inRange = false;
          if (upper > lower) {
              // opens and closes in same day
              inRange = (now >= lower && now <= upper) ? true : false;
          } else {
              // closes in the following day
              inRange = (now >= upper && now <= lower) ? false : true;
          }
          return inRange;
      }
      
      1 Reply Last reply Reply Quote 1
      • ruhr70
        ruhr70 last edited by

        schönes Beispiel. Danke!

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

          Super, kann ich gut gebrauchen. Vielen Dank.

          Gruß

          Pix

          Gesendet von meinem iPhone mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • S
            stephan61 last edited by

            Hallo ich habe ein problem mit dem script

            habe das script Funktion als globales script angelegt

            script.js.innerhalb_Zeitfenster_global und aktiviert

            habe jetz ein neues script das die lichtscene bei einen bestimmten helligkeit und innnerhalb eines Zeitfenster einschalten soll aber es geht nicht

            on('hm-rpc.0.LEQ1282876.1.BRIGHTNESS', function (obj) {
            
                if (obj.newState.val < 190 && isTimeInRange('13:00:00', '22:00:00')) setState('scene.0.lichter', true);
               if (obj.newState.val > 220) setState('scene.0.lichter', false); 
            });
            

            was mache ich falsch Gruß Stephan

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

              isTimeInRange('13:00:00', '22:00:00') habe ich gechekt. Geht.

              Kannst du log einbauen?

              on('hm-rpc.0.LEQ1282876.1.BRIGHTNESS', function (obj) {
                  console.log('BRIGHTNESS: ' + obj.newState.val + ', time: ' + isTimeInRange('13:00:00', '22:00:00'));
                  if (obj.newState.val < 190 && isTimeInRange('13:00:00', '22:00:00')) setState('scene.0.lichter', true);
                  if (obj.newState.val > 220) setState('scene.0.lichter', false); 
              });
              
              
              1 Reply Last reply Reply Quote 0
              • S
                stephan61 last edited by

                Hallo Bluefox Fehler lag nicht am Script sondern am Bewegungsmelder

                Der Helligkeitswert wird nur alle 6 Minuten aktuallisiert und aus den letzten 8 werten ein mittelwert gebildet

                habe es eingestellt das der letze Wert genommen wird.

                wie kann ich den gesammten log eigentlich ansehen wenn ich iobroker aufrufen wird nur der log ab den aufruf angezeigt?

                Gruß Stephan

                und vielen Dank für den wahnsinnigen Einsatz hier im Forum

                1 Reply Last reply Reply Quote 0
                • B
                  Beatz last edited by

                  Hallo Stephan,

                  schau mal ins Verzeichnis /opt/iobroker/logs.

                  Da liegen die Log-Dateien der letzten sieben Tage.

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

                    Hallo,

                    auf http://forum.iobroker.org/viewtopic.php?f=21&t=2620&sid=05378781a10e917095e547ff02dcc4e1&sid=05378781a10e917095e547ff02dcc4e1#p23104 hin, habe ich auch mal genau nach Deinem Vorbild isDateInRange gebastelt.

                    Siehe hier:

                    http://forum.iobroker.org/viewtopic.php … 20&p=23136

                    Gruß

                    Pix

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

                      vielen Dank für das Skript, hat mir sehr geholfen.
                      Leider sind die Forenlinks von @pix einer Forenumstellung zum Opfer gefallen

                      N 1 Reply Last reply Reply Quote 0
                      • N
                        Night2k5 @klassisch last edited by

                        @klassisch Gerade konnte man noch das .org durch .de ersetzen und wurde zum neuen Thread weitergeleitet.
                        Jetzt funktioniert es nicht mehr mit derFehlermeldung .

                        Cannot GET /viewtopic.php
                        

                        Egal, hier der Thread:
                        https://forum.iobroker.net/topic/2289/frage-istimeinrange-umschreiben-auf-datum/9

                        K 1 Reply Last reply Reply Quote 0
                        • K
                          klassisch Most Active @Night2k5 last edited by

                          @night2k5 vielen Dank!
                          Das sind halt immer die Kosten einer Forumsumstellung. Bei mir ist auch firefox nicht mehr wirklich nutzbar. Die Güterabwägung bei der Kosten-Nutzenanalyse fällt halt nicht überall gleich aus.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          852
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          7
                          11
                          4414
                          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